Вы находитесь на странице: 1из 8

Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida

Ingeniera en Informtica, Universidad de Cantabria, Espaa


Jos M. Drake
SISTEMA DE RADAR
La aplicacin consiste en el diseo del software del sistema de defensa de una zona de
inters estratgico, basada en misiles interceptores y una infraestructura en tierra con un
sistema de radar que cubre el espacio areo en la regin prxima a la zona protegida.
El objetivo de la aplicacin es defender el espacio areo de la zona estratgica, que
corresponde a un crculo de 10 km de radio. Su centro se considera como origen de
coordenadas [0, 0, 0]. El sistema de defensa est constituido por un sistema de radar
situado en el centro de la zona protegida, tiene un alcance de 50 km. As mismo, en
cuatro puntos del permetro de la zona protegida Norte [0, 10 km, 0], Este [10 km, 0, 0],
Sur [0, -10 km, 0] y Oeste [-10 km, 0, 0], existen bateras de misiles defensivos capaces
de recabar informacin del sistema de radar para localizar su objetivo, y definir y seguir la
trayectoria adecuada para interceptarlo. A partir de su lanzamiento la velocidad del misil
es constante e igual a 100 m/s.

Los objetos enemigos se denominan Jets. Se mueven siempre en lnea recta con
velocidad constante. Su velocidad vara entre 80 y 120 m/s, y la mxima altura que
pueden alcanzar es de 5.000 m. Su nmero es indeterminado, y pueden aparecer por
cualquier punto del permetro cubierto por el radar.

El sistema de radar es un equipo autnomo (que no es objeto del diseo), que ofrece una
interfaz remota (RMI) que ofrece las operaciones scan(), currentTime(), getJetPositon() y
moveMissile() que respectivamente retorna la lista de objetivos descubiertos, el tiempo
actual de su reloj, la posicin de un determinado objetivo y representa un misil defensivo
en la interfaz.






Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake

Funcionalidad de la aplicacin.

Servidor en tierra. Implementa las siguientes funciones:

Gestiona el sistema de radar y recaba de l informacin de los objetos que se
encuentran en la zona vigilada.
Cuando detecta un nuevo objeto, analiza su trayectoria. Si esta no impacta en la
zona protegida, la descarta y no le vuelve a prestar atencin. Si por el contrario,
impacta en la zona protegida, selecciona la batera de misiles ms prxima a la
zona de interseccin de la trayectoria del objeto con el cilindro que cubre el
permetro de la zona protegida y activa en ella un misil defensivo.
Mantiene actualizadas las posiciones de los objetos a interceptar y proporciona a
los misiles activados para interceptarlos la informacin que requieran sobre ellos.
Visualiza continuamente en un monitor la posicin de todos los objetivos (seguidos
y descartados) y de los misiles activados para lanzarlos.
Considera como interceptado un objeto, cuando el misil que lo intercepta explota.

Cliente misil. Tiene asignada la siguiente funcionalidad:

Permanece suspendido en espera de ser lanzado por el sistema de tierra.
Una vez activado el misil, sube inicialmente 100 m en direccin vertical.
Requiere del servidor, cuando lo necesita, la posicin del objetivo y continuamente
reporta su propia posicin.
Identifica y mantiene la trayectoria del objetivo que debe interceptar.
Define su trayectoria y controla su movimiento por ella. La trayectoria se compone
de tres tramos rectos: Inicialmente avanza verticalmente. Cuando identifica la
trayectoria del objeto que debe interceptar, cambia su trayectoria hacia el punto de
interseccin de la trayectoria del objeto con el cilindro que se sita sobre el
permetro de la zona protegida. Cuando alcanza esa posicin, cambia de nuevo la
direccin de su trayectoria y se dirige directamente hacia el objetivo. Lo alcanza
siempre de frente (as lo alcanza aunque el objeto sea ms veloz que el misil).
Cuando impacta con el objeto, se destruye y deja de operar (deja de reportar su
posicin al servidor de tierra).



Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake



Diseo de la aplicacin

En los siguientes diagramas de clases se muestra el diseo estructural de la aplicacin
SmartHunter como programa concurrente que se distribuye. Los detalles sobre su
funcionalidad pueden encontrarse en los comentarios del cdigo que se distribuye.



Clase SmartHunterSystem: Representa el programa principal que lanza la aplicacin:
Construye el objeto defenseBase, que corresponde al software ubicado en la
infraestructura de tierra y construye el conjunto de misiles con los que se arma el sistema,
y los distribuye por las cuatro bateras existentes.

Mtodos:
main(): Mtodo principal que lanza la ejecucin del programa concurrente.
Instancia defenseBase, con lo que construye la aplicacin, genera 5 misiles por
cada batera y inicializa en defenseBase el inicio de la ejecucin.

Clase DefenseBase: Representa la clase base del sistema de defensa. Tiene agregada
el sistema de radar del que obtiene informacin sobre los jets atacantes y cuatro bateras
de misiles a travs de los que lanza los misiles defensivos. Es una clase activa, y en su
mtodo run() requiere los jets que supervisa el sistema de radar, los compara con los que
ya tiene registrados, y en el caso de que sea nuevo, analiza su trayectoria y en caso de
que lo identifique como peligroso lanza un misil para interceptarlo.

Constantes:
<final>SCAN_PERIOD=1000 => Periodo con el que se invoca scan() al sistema
radar para verificar los jets que se detectan en el espacio areo que se supervisa.
Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake

Atributos:
theRadar:RadarSystem => Referencia la instacia del SistemaRadar con el que se
supervisa el espacio areo.
theBateries: MissileBatery => Referencia a las 4 bateras desde las que se
gestionan los misiles.
theJets: JetData =>Lista de los datos que referencian los jets atacantes que estn
siendo supervisados.

Mtodos:
DefenseBase() => Constructor de la clase.
init() => Inicia la actividad del sistema de defensa. No se ha automatizado para
posibilitar crear los misiles defensivos sin actividad del sistema de defensa.

shotMissile(battery:int, jc:JetControl) => Requiere el lanzamiento desde la
betera que se pasa como primer parmetro un misil para interceptar el jet cuyos
JetData pasan como segundo parmetro.
getBattery(index:int):MissileBatery => Retorna la referencia del la batera cuyo
ndice se pasa como argumento.


Clase JetData => Clase en la que delega la clase defenseBase para el seguimiento de
cada jet detectado por el sistema de Radar:

- Analiza el Jet y lo clasifica como inofensivo o peligroso
- Si el jet es peligroso ordena el disparo de un misil.

Atributos:
id: long => Identificador de jet que representa.
intersection:Position => Posicin de la interseccin de la trayectoria del jet con el
cilindro de la zona defendida.
lastJetPosition: Postion => Posicin del jet en la supervisin previa. Se utiliza
para determinar la trayectoria.
identified: Boolean => Ya se disponen de dos posiciones del jet, y con ello se
tiene identificada la trayectoria.
checked: Boolean => El jet se encuentra en la presente supervisin, y por tanto
continua activo.

Mtodos:
JetData(id:long, theJetPosition:Position,db:DefenseBase)=> Constructor de la
clase. Se le pasa el identificador del jet que representa, su posicin actual y la
referencia al sistema de defensa.
getIntersection():Position=> Retorna la posicin de interseccin de la trayectoria
del jet con el cilindro de la zona defendida.
setJetPosition(newPosition:Position) => Registra una nueva posicin del jet. Si
es la segunda, analiza la trayectoria y en el caso de que sea peligroso lanza el
misil defensivo de la batera que corresponda.

Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake
Clase MissileBattery => Clase que representa el software ubicado en la plataforma de
lanzamiento de misiles. Constituye el punto de contacto del sistema de defensa del que
los misiles adquieren informacin.

Attributos:
xCoord, yCoord :int => Coordenadas de la posicin de la batera de misiles: N
(0,10000), E(10000,0), S(0,-10000) y O (-10000,0).

Mtodos:
MissileBatery(name:String, db:DefenseBase) => Constructor de la clase.
Recibe como parmetros su nombre {N,E,S y O}.
shot(id:long, intersection:Position) => Habilita el disparo de un misil adscrito a
la batera. Recibe el id del jet, con el que el misil pueda recabar (a la batera)
informacin sobre l y el punto de interseccin al que inicialmente debe ir el misil.
getJetX(id:long):float, getJetY(id:long):float y getJetZ(id:long):float =>
Retorna las
coordenadas del punto de interseccin.
getTargetId():long => Mtodo al que los misiles requieren (mediante polling) el jet
que van a constituir su objetivo. Cuando no hay jet asignado retorna -1, En el caso
de que se le asigne uno retorna su id, y ello supone el lanzamiento del misil.
getIntersectionX(jetId:long):float, getIntersectionY(jetId:long):float y
getIntersectionZ(jetId:long):float=> Retorna las coordenadas del punto de
interseccin del jet con el cilindro de la zona defensiva.
setMissilePosition(id:long,x:float,y:float,z:float) => Con su invocacin, el misil
informa su posicin para ser visualizado en la GUI.

Interfaz remota SistemaRadar: La ofrece el equipo que implementa el sistema de radar.
A travs de ella se puede recabar informacin de los objetos que se encuentran en la
zona de observacin. A cada objeto, le asigna un identificador nico, que lo identifica de
forma unvoca en todas las listas de posiciones que suministre el sistema de radar
mientras que permanezca en la zona de observacin. Proporciona la localizacin de cada
objeto a travs de sus tres coordenadas x, y y z con resolucin de un metro. El
sistema filtra los misiles defensivos, de los que no proporciona informacin. /**

Mtodos:
scan():TargetList => Retorna la lista de todos los elementos invasores que tiene
registrados.
currentTime():long => Retorna el tiempo actual medido por su reloj interno. Este
reloj es el ques e utiliza para datar los resultados que proporciona.
jetPosition(jetId:long):Position=> Retorna la posicin actual del jet cuyo
identificador se pasa como argumento.
moveMissile(id:long, to:Position) => Visualiza en la GUI una nueva posicin del
misil.
Clase TargetList: Define la estructura de datos que retorna el mtodo scan() de la
interfaz SistemaRadar. Describe los objetos y la posicin que ocupan en el
instante concreto en el que se invoca el mtodo.

Atributos:
time:long => Representa el tiempo expresado en milisegundos al que
corresponde las posiciones de los objetos descritos en la instancia.
Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake
targets: TreeMap<long,Position> => Es una lista diccionario (Map) que contiene
una entrada por cada objetivo detectado. La clave es el identificador de cada
objetivo y es un long. Entradas con el mismo identificador en diferentes instancias
corresponden al mismo objeto. De cada objeto detectado contiene su Posicin,
caracterizada por las tres coordenadas cartesiana x, y y z expresadas en
metros.

Clase AirRaid =>: Representa un escenario de un ataque de la zona protegida visto
desde el sistema de radar. Hacia el exterior es un sistema de Radar que implementa la
interfaz SistemaRadar. Internamente modela un ataque en el que los objetivos entran
aleatoriamente por cualquier punto del permetro. Contiene la GUI en la que se representa
la informacin.

Mtodos:
AirRaid(interarrivalJet:int, numJet:int) => Constructor. Recibe como parmetros
interarrivalJet que describe cada cuantos segundos genera un nuevo jet atacante
(valr tpico 5 s) y numJet que indica el nmero de jet que coexisten atacando.
Implementa los mtodos de la interfaz RadarSystem.

Clase SmartHunterGUI => Interfaz grfica de usuario que ofrece recursos para visualizar
grficamente la evolucin de los jets y misiles en la aplicacin SmartHunter



Clase Misil => Objeto que controla el movimiento de los misiles defensivos a fin de
interceptar el jet atacante que le ha sido asignado. Es un programa activo que acta de
forma autnoma. Para ello, recaba de la clase MissilBatery desde la que fue lanzado, la
informacin que necesita para el seguimiento del Jet que tiene asignado y ejecuta las
acciones a travs de la clase que controla el hardware a travs de la interfaz
MissileHardware.

Atributos:
state: MissilState => Representa los estados que sigue un misil desde que es
lanzado hasta que explota destruyendo el jet.
Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake
missileTime: long => Representa el tiempo que transcurre en ms desde que es
lanzado el missil hasta que explota.
id: long => Identificador del jet que debe destruir. Lo utiliza para requerir de la
batera la
informacin que necesita del jet que se le asigna como objetivo.
Mtodos:
Missile(batteryName:String, batteryRef:MissileBattery) => Constructor. Recibe el
nombre de la batera en la que se instala (E, N, S y O).
run() => Mtodo que constituye la actividad del missil.

Interfaz MissileHardware: Interfaz que deben ofrecer los objetos que constituyen el
controlador del mecanismo que constituye el misil.
Mtodos:
shot() => Dispara el misil de la batera en la que est instalado.
setDirection(cosDirX:foat, cosDirY:float, cosDirZ:float) => Establece la
direccin de avance del misil. Se pasan como argumentos los tres cosenos
directores de la direccin de avance.
getX():float, getY():float, getZ():float =>Retorna las coordenadas de la posicin
actual del misil, obtenidas a travs del GPS que posee.
explode() => Se ordena explotar la carga del misil.

Clase SpeedFalcon: Clase que emula el hardware de un misil que se desplaza a una
velocidad de 1000 m/s. Su desplazamiento se controla a travs de los mtodos definidos
en la interfaz MissilHardware que implementa.

Mtodos:
SpeedFalcon(batteryName:String): Constructor. Recibe como informacin el
nombre de la batera en la que est instalado. Lo usa para inicializar su sistema de
posicin.

Relaciones cliente/servidor entre mdulos

En el diagrama de colaboracin se muestran los subsistemas que constituyen el sistema
defensivo SmartHunter, y se identifican las relaciones cliente/servidor que se establecen
entre ellos, y los servicios que se prestan.

Problema planteado en el material de asignatura de: Programacin Concurrente y Distribuida
Ingeniera en Informtica, Universidad de Cantabria, Espaa
Jos M. Drake



La aplicacin se desarrolla en equipos mximo de 4 personas (no se aceptarn
equipos de ms integrantes).

Junto con la aplicacin es necesario entregar el manual operativo, este contiene:
Portada
Especificacin de la aplicacin.
Diagramas de caso de uso
Diagramas de transicin de estados por mdulo programado, incluyendo GUI
Cdigo documentado de la aplicacin (la documentacin no es lnea por lnea
es definir claramente la finalidad de cada tarea incluida en el programa y su
relacin con los otras del sistema)
Descripcin detallada de la aplicacin (interfaces describiendo como se opera,
datos de entrada, datos de salida) establece el diseo propio de los programas
vinculados con sus interfaces.

Вам также может понравиться