memoria - primera entrega - 05302005 - departamento …lhevia/asignaturas/proy_ti/topicos/... ·...

33
Valparaíso 30 de Mayo del 2005 César Pasache A. Ingeniero Civil Informático

Upload: trannhan

Post on 27-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Valparaíso 30 de Mayo del 2005

César Pasache A. Ingeniero Civil Informático

1. Índice 1. Índice ________________________________________________________ 2

1.1. Índice de imágenes _______________________________________________ 3 1.2. Índice de Código fuente ___________________________________________ 3

2. Introducción___________________________________________________ 4 3. Estado del arte_________________________________________________ 6

3.1. CD TEC – IrriMAX_________________________________________________ 6 3.2. Verdtech – addVANTAGE 4 Pro _____________________________________ 7 3.3. Hanna Instruments - Equipo de Fertirriego HI 8001 _____________________ 8

4. Desarrollo de Software __________________________________________ 9 4.1. ¿Qué es UML? ___________________________________________________ 9 4.2. Visión de alto nivel del sistema ____________________________________ 12 4.3. Casos de uso ___________________________________________________ 14

4.3.1. Diagrama de casos de uso ______________________________________________15 4.3.2. Descripción de casos de uso _____________________________________________16

4.4. Clases del sistema_______________________________________________ 20 4.4.1. Diagrama de clases ____________________________________________________21 4.4.2. Generación de código __________________________________________________22

5. Bibliografía___________________________________________________ 33

1.1. Índice de imágenes Imagen 1 - IrriMAX 6.1 ____________________________________________________________6 Imagen 2 - IrriMAX 6.1 (Acercamiento en el gráfico) _____________________________________7 Imagen 3 - Aplicación de Verdtech___________________________________________________8 Imagen 4 - Diagrama de clases de diagramas de UML ___________________________________9 Imagen 5 - Diagrama de casos de uso_______________________________________________15 Imagen 6 - Diagrama de clases dominantes. __________________________________________21

1.2. Índice de Código fuente Código 1 - Clase Usuario.............................................................................................................. 22 Código 2 - Clase Elemento........................................................................................................... 23 Código 3 - Clase Control .............................................................................................................. 24 Código 4 - Clase Grafico .............................................................................................................. 25 Código 5 - Clase Evento............................................................................................................... 26 Código 6 - Clase Interfaz.............................................................................................................. 26 Código 7 - Clase PlanDeRiego..................................................................................................... 27 Código 8 - Clase PlanPorSector ................................................................................................... 28 Código 9 - Clase Sector ............................................................................................................... 29 Código 10 - Clase Sensor............................................................................................................. 30 Código 11 - Clase Valvula ............................................................................................................ 31 Código 11 - Clase Interfaz............................................................................................................ 32

2. Introducción Las empresas productoras agrícolas, siempre están en la búsqueda de maximizar su producción y la calidad de sus productos, objetivos que dependen de una gran cantidad de variables, tanto ambientales como del cultivo como tal. Dentro las variables podemos observar una clasificación fundamental, las variables dependientes o controlables y las independientes o no-controlables. Entre las independientes destacan por su importancia las variables climatologiítas, las cuales pueden ser la temperatura ambiente, la humedad ambiental, la evaporación de bandeja, e inclusive eventos climatológicos como lluvias y sequías, todas estas variables influyen en todas las etapas fonológicas1 del cultivo. Obviamente, la calidad de la producción no depende solo de estas variables, sino que existe un factor determinante, este es la humedad del suelo. Esto se observa en las distintas reacciones que un cultivo puede tomar según esta variable.

• Si hay demasiada humedad en la tierra, el cultivo se ahoga, dado que este cierra sus poros de evotranspiración con el objetivo de no absorber más agua, al realizar esta acción tampoco consume el aire necesario para desarrollarse.

• Si el terreno está seco, el cultivo cierra sus poros de evotranspiración para

así no perder el agua que posee. La idea del proyecto “NAUTILUS”, es diseñar un sistema que permita al agrónomo tomar una mejor decisión de riego, esto mediante el ajuste de programas de riego y el control del proceso de riego en el cultivo. Este objetivo se alcanza mediante el despliegue gráfico de información relevante para la toma de de decisión de riego, como por ejemplo la humedad del suelo, el agua caída, etc. El proceso que el proyecto NAUTILUS realizará para alcanzar el objetivo será:

1. Obtención de datos: Mediante el apoyo de módulos de sensores inalámbricos ubicados en sectores estratégicos de cada zona del cultivo, se obtendrán las diferentes variables que inciden en el cultivo.

2. Comunicación de los datos:

Estos datos “viajarán” por un medio inalámbrico hasta el modulo de “puerta de enlace” (gateway), el cual interpretará los datos y los almacenará en una base de datos.

1 Etapas del ciclo vital de una planta. Ej: siembra, brote, etc…

3. Procesado de datos: Los datos almacenados serán procesados mediante algunos modelos matemáticos (que son suministrados por el mismo agrónomo). Estos modelos pueden ser representados de forma gráfica dentro de la interfaz del agrónomo.

4. Ajuste del programa de riego:

El programa de riego puede ser definido previamente por el agrónomo, y este determina la duración del riego o el caudal suministrado al cultivo. Al momento de tomar la decisión de ajuste del programa de riego, el sistema contará con la información necesaria para desplegarla en pantalla. En este paso, el sistema propondrá un ajuste definido por los modelos matemáticos. La decisión de aplicar este ajuste, queda a cargo del agrónomo, el cual tendrá la posibilidad de proponer un ajuste propio. Si se opta por el ajuste propio, este puede ser respaldado por algún método de medición manual, como lo serian las calicatas2.

5. Ejecución del programa:

Luego de realizado el ajuste, el agrónomo o el responsable del cultivo, podrá controlar el proceso de riego mediante la medición del caudal aplicado o del tiempo de riego. Estos datos quedarán en un historial, para ser comparados en ajustes posteriores.

Dada las características del sistema, este se desarrollará en tres partes: Sensores, Comunicación y Desarrollo de Software. Las cuales se realizarán en forma paralela, en que dentro de esta memoria, se realizará el estudio de la parte de Desarrollo de Software.

2 Calicata: Método utilizado por los agrónomos para medir la humedad actual del terreno. Consiste en obtener una muestra de suelo y revisar manualmente su humedad. Este es un método objetivo, el cual no posee un valor predeterminado.

3. Estado del arte Actualmente dentro del mercado no existe un sistema que englobe todas las características presentadas anteriormente, sin embargo, existen aplicaciones similares que son parte de la competencia de mercado dentro de Chile. Se estudian tres empresas, las cuales poseen aplicaciones orientadas a diferentes procesos agronómicos.

3.1. CD TEC – IrriMAX La empresa CD TEC (Consultora Diestre Tecnología) es representante en Chile de Sentek, la cual es desarrolladora de la aplicación IrriMAX3. IrriMAX es un sistema de monitorización de humedad del suelo. Está diseñado para mostrar e interpretar fácilmente la humedad del suelo, su salinidad, las aguas caídas y los datos del riego. Este sistema se acopla a los sensores de Sentek.

Imagen 1 - IrriMAX 6.1

Las características claves del sistema IrriMAX son4: ¡ Muestra en forma continua los datos de la humedad del suelo. ¡ Muestra la información de los niveles de profundidad individuales o alguna

suma en particular.

3 Actualmente el software esta en su versión 6.1 4 Información obtenida en http://www.sentek.com.au/products/irrimax.asp?lang=en.

¡ Comparaciones directas de salinidad y fertilizante, humedad del suelo, lluvias y riego, todo dentro del mismo gráfico.

¡ Comparación de datos desde múltiples sensores y puntas de prueba en un solo gráfico.

¡ Poderosa función de acercamiento para revisar eventos claves en mayor detalle o desde una visión más amplia.

¡ Actualización automática de gráficos. ¡ Los gráficos permiten al usuario fijar umbrales críticos para la humedad.

También se pueden agregar comentarios para guardar notas claves e información relevante.

Imagen 2 - IrriMAX 6.1 (Acercamiento en el gráfico)

3.2. Verdtech – addVANTAGE 4 Pro Verdtech es una empresa española que basa su metodología en integrar métodos de diagnostico en proyectos de aprendizaje a medio plazo para ayudar a la empresa a disponer de información global de la gestión del cultivo, partiendo del conocimiento continuo del estado en de la planta como base para la toma de decisiones5.

5 Información obtenida desde http://www.verdtech.es/

Imagen 3 - Aplicación de Verdtech

Actualmente esta empresa lanzó al mercado el servicio addVANTAGE PRO, el cual es un servicio de visualización de datos por Internet, y permite un apoyo a la interpretación de datos mucho más eficaz.

3.3. Hanna Instruments - Equipo de Fertirriego HI 8001 Hanna Instruments es una empresa orientada al control del proceso de riego. El último equipo diseñado es el Equipo de Fertirriego HI 8001, el cual discrimina Según pH, Conductividad, Radiación Solar y Agua Acumulada. Tiene la capacidad de operar entre 8 y 32 sectores de manera independiente. El equipo de fertirriego cuenta con todos los parámetros necesarios para tecnificar el riego. Cada sector puede manejarse de manera independiente en cuanto a la cantidad y tipo de fertilizante, así como en sus tiempos y oportunidad de administración. Además, el equipo asegura el cumplimiento de las indicaciones del agrónomo para cada sector del cultivo, evitando errores y olvidos. Además, para apoyar al encargado de riego, todas las instrucciones están en español6. “el uso adecuado de fertilizantes es fundamental para tener buenas cosechas y lograr una producción comercial de exportación. El agrónomo a cargo determina los requerimientos exactos de cada planta por temporada, que fertilizante se aplica en los últimos meses y particularmente post-cuaja, que es el momento en que comienza el programa de fertilización. Otros factores que se consideran para determinar las cantidades adecuadas de cada nutriente son las características del suelo, el clima y finalmente, la visión de cada agrónomo7.

6 Información extraída de www.hannachile.com. 7 Juan Pablo Arratia, Market Manager de Agricultura de Hanna Instruments.

4. Desarrollo de Software Uno de los principales problemas que se presentan en la mayoría de los proyectos informáticos es la obtención clara de los requerimientos. Para solucionar este problema, se utilizará el estándar UML8.

4.1. ¿Qué es UML? UML consiste en un sistema integrado de diagramas, desarrollados para ayudar a los desarrolladores de software a cumplir las siguientes tareas: ¡ Especificación ¡ Visualización ¡ Diseño de arquitectura ¡ Construcción ¡ Simulación y pruebas (Testing) ¡ Documentación

Diagrama

Diagrama de comportamientoDiagrama de estructura

Diagrama de clases

Diagrama de paquetes

Diagrama de co mponentes

Diagrama de objetos

Diagrama de despliegue Diagrama de estructura compuesta

Diagrama de actividades

Casos de uso Diagrama de estados

Diagrama de interacción Maquinas de proto co los de estado

Diagrama descriptivode interacción

Diagrama de secuencia

Diagrama de comunicaciones

Diagrama de sincronización

Created with Poseidon for UML Community Edition. Not for Commercial Use.

Imagen 4 - Diagrama de clases de diagramas de UML

8 Unified Modeling Language, Lenguaje Unificado de modelado

El uso que se le da a cada uno de los diferentes diagramas UML, se explica a continuación: ¡ Diagrama de clases:

Usado para mostrar las entidades del mundo real, elementos del análisis y del diseño, o la implementación de las clases y sus relaciones.

¡ Diagrama de objetos:

Usado para mostrar un caso especifico o ilustrativo de los objetos y sus conexiones. También es usado para indicar las condiciones necesarias para la ocurrencia de un evento particular.

¡ Diagrama de estructura compuesta:

Usado para mostrar “el como algo está hecho”. Especialmente útil en estructuras de estructuras o diseño basado en componentes.

¡ Diagrama de despliegue:

Usado para mostrar la arquitectura del sistema en tiempo de ejecución, las plataformas de hardware, artefactos de software9 y el las variables de ambiente del software10.

¡ Diagrama de componentes:

Usado para mostrar la organización y las relaciones entre los sistemas internos.

¡ Diagrama de paquetes:

Usado para organizar los elementos del modelo y mostrar la dependencia entre ellos.

¡ Diagrama de actividades:

Usado para mostrar el flujo de datos o el flujo de control, de un flujo de trabajo sobre objetos que poseen relaciones.

¡ Diagrama de casos de uso:

Usado para mostrar los servicios que los actores pueden requerir del sistema.

¡ Diagrama de estados y Diagrama de protocolos de estado:

Usado para mostrar el ciclo de vida de un objeto particular, o las secuencias que un objeto o interfaz debe soportar.

9 Ítems de software que se ejecutan, por ejemplo librerías. 10 Como el sistema operativo y maquinas virtuales.

¡ Diagrama descriptivo de interacción:

Usado para mostrar los diferentes escenarios interactivos, se muestran aquí las diferentes colaboraciones11.

¡ Diagrama de secuencias:

Usado para mostrar el intercambio de mensajes entre un grupo de objetos y el orden en que se manifiestan.

¡ Diagrama de comunicación:

Usado para mostrar el intercambio de mensajes y sus relaciones entre objetos.

¡ Diagrama de sincronización:

Usado para mostrar los cambios y sus relaciones con el reloj de tiempo real. Dada la difusión que ha tenido el UML, se han desarrollado muchas herramientas que logran automatización en la generación de código. Para el proyecto, se utilizará el software Poseidon12, el cual desde los modelos de UML puede generar un paquete en JAVA del sistema.

11 Un set de elementos trabajando juntas para cumplir un objetivo. 12 www.gentleware.com/

4.2. Visión de alto nivel del sistema Antes de revisar en detalle cada requerimiento, se plantean requerimientos de más alto nivel (más generales). Algunas características que debe tener este sistema son: ¡ Es un sistema de apoyo en la toma de decisión de riego. ¡ El usuario del sistema debe ser un usuario registrado. ¡ El predio debe ser regado en la medida en que el agrónomo estime

conveniente. ¡ Cada predio es dividido en sectores o zonas, las cuales se caracterizan por

la homogeneidad de sus suelos y sus tipos de cultivo. ¡ El predio es monitorizado por diferentes tipos de sensores, en cada uno de

ellos se mide una variable particular del cultivo, tales como la temperatura ambiente, la humedad ambiental, el tamaño del tronco, humedad del suelo, entre otras.

¡ Un programa de riego es especificado por sector, y es activado por el

agrónomo o el responsable de riego. Cada programa es definido por el tiempo de riego o caudal de agua entregada.

¡ La información entregada al agrónomo es de forma gráfica, en la cual se

podrá realizar diferentes análisis de datos, entre ellas el cálculo de máximos y mínimos, y ajustes de tendencia.

¡ El agrónomo utiliza la información de los sensores para diseñar o ajustar un

programa de riego. ¡ El agrónomo puede seleccionar la variable que desea desplegar en los

gráficos. Se puede asociar el gráfico a un sensor en particular o hacer una suma de alguna de las variables o formula matemática definida por el usuario.

¡ El agrónomo puede agregar un evento asociado a una fecha.

¡ Un evento puede ser desplegado en un gráfico, con lo cual puede ser

asociado a una variable en particular. ¡ El agrónomo puede crear, actualizar y eliminar programas de riego.

¡ El agrónomo puede crear, actualizar y eliminar formulas matemáticas. Cada formula puede referenciar a otra formula.

¡ El sistema controla las válvulas de regadío, y monitoriza el tiempo y el

caudal de regadío. ¡ El usuario puede seleccionar la información que desea desplegar y la

ubicación en pantalla. Esta distribución puede ser almacenada para posteriormente utilizarla otra vez.

¡ Cada sensor puede ser asignado a algún sector. También puede definirse

la escala de medida de cada uno de ellos.

4.3. Casos de uso De los requerimientos listados anteriormente, se observan dos actores principales: ¡ Agrónomo ¡ Configurador

Por otro lado, los casos de uso principales que se obtienen de estos requerimientos son: ¡ CU1: Ingresar al sistema ¡ CU2.1: Abrir válvulas de riego ¡ CU2.2: Cerrar válvulas de riego ¡ CU2: Controlar riego ¡ CU3: Sectorizar predio ¡ CU4: Configurar sensores ¡ CU5.1: Crear plan de riego ¡ CU5.2: Ajustar plan de riego ¡ CU5: Administrar plan de riego ¡ CU6.1: Crear formula de análisis ¡ CU6.2: Modificar formula de análisis ¡ CU6.3: Eliminar formula de análisis ¡ CU6: Administrar formulas de análisis ¡ CU7.1: Agregar un evento ¡ CU7: Administrar eventos ¡ CU8.1: Agregar gráfico a interfaz ¡ CU8: Configurar interfaz ¡ CU99: Asumir identidad de Configurador

4.3.1. Diagrama de casos de uso

Imagen 5 - Diagrama de casos de uso

Usu

ario

Reg

istra

do

Agró

nom

o

Con

figur

ador

CU

1: In

gres

ar a

l sis

tem

a

CU

2.1:

Abr

ir vá

lvul

as d

e rie

go

CU

5.1:

Cre

ar p

lan

de ri

ego

CU

4: C

onfig

urar

sen

sore

s

CU

99: A

sum

ir id

entid

ad d

e C

onfig

urad

or

CU

6.1:

Cre

ar f

orm

ula

de a

nális

is

CU

5.2:

Aju

star

pla

n de

rieg

o

CU

8: C

onfig

urar

inte

rfaz

CU

3: S

ecto

rizar

pre

dio

CU

2.2:

Cer

rar v

álvu

las

de ri

ego

CU

6.2:

Mod

ifica

r for

mul

a de

aná

lisis

CU

6.3:

Elim

inar

for

mul

a de

aná

lisis

CU

8.1:

Agr

egar

grá

fico

a in

terf

azC

U7.

1: A

greg

ar u

n ev

ento

CU

6: A

dmin

istr

ar f

orm

ulas

de

anál

isis

<<ex

tend

>>

<<ex

tend

>>

<<ex

tend

>>

CU

5: A

dmin

istr

ar p

lan

de ri

ego

<<ex

tend

>>

<<ex

tend

>>

CU

2: C

ontro

lar r

iego

<<ex

tend

>>

<<ex

tend

>>

CU

7: A

dmin

istr

ar e

ven

tos

<<ex

tend

>>

Crea

ted

with

Po

seid

on fo

r UM

L C

omm

unity

Edi

tion.

Not

for C

omm

erci

al U

se.

4.3.2. Descripción de casos de uso Caso de uso CU1: Ingresar al sistema Actores Usuario registrado

Flujo básico 1. El usuario inicia el sistema. 2. El sistema pide al usuario ingresar su identificador y su palabra clave. 3. El usuario ingresa los datos pedidos y procede a ingresar al sistema. 4. El sistema valida los datos del usuario.

4.1. Si el usuario existe en el sistema y su palabra clave corresponde a la almacenada continuar con el caso de uso.

4.2. Si el usuario no existe en el sistema o su palabra clave no corresponde a la almacenada, el sistema desplegara un aviso indicando el error y finaliza el caso de uso.

5. El sistema identifica al usuario como registrado y procede a la carga del perfil correspondiente.

Caso de uso CU2: Controlar riego Actores Usuario registrado

Flujo básico 1. Caso de uso CU2.1: Abrir válvulas de riego Actores Usuario registrado

Flujo básico 1. Caso de uso CU2.2: Cerrar válvulas de riego Actores Usuario registrado

Flujo básico 1.

Caso de uso CU3: Sectorizar predio Actores Configurador

Flujo básico 1. Caso de uso CU4: Configurar sensores Actores Configurador

Flujo básico 1. Caso de uso CU5: Administrar plan de riego Actores Agrónomo

Flujo básico 1. Caso de uso CU5.1: Crear plan de riego Actores Agrónomo

Flujo básico 1. Caso de uso CU5.2: Ajustar plan de riego Actores Agrónomo

Flujo básico 1. Caso de uso CU6: Administrar formulas de análisis Actores Agrónomo

Flujo básico 1.

Caso de uso CU6.1: Crear formula de análisis Actores Agrónomo

Flujo básico 1. Caso de uso CU6.2: Modificar formula de análisis Actores Agrónomo

Flujo básico 1. Caso de uso CU6.3: Eliminar formula de análisis Actores Agrónomo

Flujo básico 1. Caso de uso CU7: Administrar eventos Actores Agrónomo

Flujo básico 1. Caso de uso CU7.1: Agregar un evento Actores Agrónomo

Flujo básico 1. Caso de uso CU8: Configurar interfaz Actores Agrónomo

Flujo básico 1.

Caso de uso CU8.1: Agregar gráfico a interfaz Actores Agrónomo

Flujo básico 1. Caso de uso CU99: Asumir identidad de Configurador Actores Agrónomo

Flujo básico 1.

4.4. Clases del sistema Las clases dominantes para el sistema son: ¡ Control ¡ Elemento ¡ Evento ¡ Grafico ¡ Interfaz ¡ PlanDeRiego ¡ PlanPorSector ¡ Sector ¡ Sensor ¡ Usuario ¡ Valvula ¡ Variable

Con estas clases podemos dar solución al diagrama de casos de uso expuesto anteriormente.

4.4.1. Diagrama de clases

<< entity >>Usuario

-interf aces:List

+addInterf az(interf az:Interf az):v oid

<< entity >>Interfaz

-elementos:List

+addElemento(elemento:Elemento ):v oid

<< entity >>Grafico

-v ariables:List-ev entos:List

+addVariable (v ariable:Variable):v oid+addEv ento(ev ento:Ev ento):v oid+dibujar ():v oid

<< entity >>Variable

-Sensor:Sensor

+getValor():Float

<< entity >>Sensor

-sector:Sector

+setSector(idSector:Sector):v oid1..*

0..1

<< entity >>Sector

-t ipoDeCultiv o:int-tipoDeSuelo:int-v alv ula:Valv ula

+addValv ula(v alv ula:Valv ula):v oid

<< interf ace>>Elemento

-x:int-y:int-ancho:int-largo:int

+setPosicion(x:int,y:int):v oid+dibuja():v oid

<< implementation >>

*

0..1

0..1

0..1

0..1

0..1

*

0..1

<< entity >>Control

-planSeleccionado :PlanDeRiego[ordered]

+setPlan(plan:PlanDeRiego):v oid+ejecutarPlan():v oid

<< implementation >>

<< entity >>PlanDeRiego

-planes :List

+addPlan(plan:PlanPorSector ):v oid

*

PlanPorSector

-sector:Sector-duracionDeRiego:int-caudalDeRiego:int

+setDuracion():v oid+setCaudal():void

*

<< entity >>Valvula

+abrir():v oid+cerrar():v oid

1..*

<< entity >>Evento

+f echa:Date+tipo:int+descripcion:String

* *

Created with Poseidon for UML Community Edition. Not for Commercial Use.

Imagen 6 - Diagrama de clases dominantes.

4.4.2. Generación de código Con el diagrama de clase anteriormente mostrado, se genera automáticamente el siguiente código fuente13: /** * <p></p> */ public class Usuario { /** * <p>Represents ...</p> */ private java.util.List interfaces; /** * <p></p> */ public Interfaz interfaz; /** * <p>Does ...</p> * * * * @param interfaz */ public void addInterfaz(Interfaz interfaz) { // your code here } }

Código 1 - Clase Usuario

13 Dada las características del software POSEIDON, el código fuente generado es en JAVA.

/** * <p></p> */ public abstract class Elemento { /** * <p>Represents ...</p> */ private int x; /** * <p>Represents ...</p> */ private int y; /** * <p>Represents ...</p> */ private int ancho; /** * <p>Represents ...</p> */ private int largo; /** * <p>Does ...</p> * * * * @param x * @param y */ public void setPosicion(int x, int y) { // your code here } /** * <p>Does ...</p> * * */ public void dibuja() { // your code here } }

Código 2 - Clase Elemento

/** * <p></p> */ public class Control extends Elemento { /** * <p>Represents ...</p> */ private PlanDeRiego planSeleccionado; /** * <p></p> */ public PlanDeRiego planDeRiego; /** * <p>Represents ...</p> * * * * @param plan */ public void setPlan(PlanDeRiego plan) { // your code here } /** * <p>Does ...</p> * * */ public void ejecutarPlan() { // your code here } }

Código 3 - Clase Control

/** * <p></p> */ public class Grafico extends Elemento { /** * <p>Represents ...</p> */ private java.util.List variables; /** * <p>Represents ...</p> */ private java.util.List eventos; /** * <p></p> */ public Variable variable; /** * <p></p> * * @poseidon-type Evento */ public java.util.Collection evento = new java.util.TreeSet(); /** * <p>Does ...</p> * * * * @param variable */ public void addVariable(Variable variable) { // your code here } /** * <p>Does ...</p> * * * * @param evento */ public void addEvento(Evento evento) { // your code here } /** * <p>Does ...</p> * * */ public void dibujar() { // your code here } }

Código 4 - Clase Grafico

/** * <p></p> */ public class Evento { /** * <p>Represents ...</p> */ public java.util.Date fecha; /** * <p>Represents ...</p> */ public int tipo; /** * <p>Represents ...</p> */ public String descripcion; /** * <p></p> * * @poseidon-type Grafico */ public java.util.Collection grafico = new java.util.TreeSet(); }

Código 5 - Clase Evento /** * <p></p> */ public class Interfaz { /** * <p>Represents ...</p> */ private java.util.List elementos; /** * <p></p> */ public Usuario usuario; /** * <p>Does ...</p> * * * * @param elemento */ public void addElemento(Elemento elemento) { // your code here } }

Código 6 - Clase Interfaz

/** * <p></p> */ public class PlanDeRiego { /** * <p>Represents ...</p> */ private java.util.List planes; /** * <p></p> * * @poseidon-type PlanPorSector */ public java.util.Collection planPorSector = new java.util.TreeSet(); /** * <p></p> */ public Control control; /** * <p>Does ...</p> * * * * @param plan */ public void addPlan(PlanPorSector plan) { // your code here } }

Código 7 - Clase PlanDeRiego

/** * <p></p> */ public class PlanPorSector { /** * <p>Represents ...</p> */ private Sector sector; /** * <p>Represents ...</p> */ private int duracionDeRiego; /** * <p>Represents ...</p> */ private int caudalDeRiego; /** * <p></p> */ public Sector sector; /** * <p></p> */ public PlanDeRiego planDeRiego; /** * <p>Represents ...</p> * * */ public void setDuracion() { // your code here } /** * <p>Does ...</p> * * */ public void setCaudal() { // your code here } }

Código 8 - Clase PlanPorSector

/** * <p></p> */ public class Sector { /** * <p>Represents ...</p> */ private int tipoDeCultivo; /** * <p>Represents ...</p> */ private int tipoDeSuelo; /** * <p>Represents ...</p> */ private Valvula valvula; /** * <p></p> * * @poseidon-type Sensor */ public java.util.Collection sensor = new java.util.TreeSet(); /** * <p></p> * * @poseidon-type PlanPorSector */ public java.util.Collection planPorSector = new java.util.TreeSet(); /** * <p>Does ...</p> * * * * @param valvula */ public void addValvula(Valvula valvula) { // your code here } /** * <p></p> * * @poseidon-type Valvula */ public java.util.Collection valvula = new java.util.TreeSet(); }

Código 9 - Clase Sector

/** * <p></p> */ public class Sensor { /** * <p>Represents ...</p> */ private Sector sector; /** * <p></p> */ public Variable variable; /** * <p></p> */ public Sector sector; /** * <p>Represents ...</p> * * * * @param idSector */ public void setSector(Sector idSector) { // your code here } }

Código 10 - Clase Sensor

/** * <p></p> */ public class Valvula { /** * <p></p> */ public Sector sector; /** * <p>Does ...</p> * * */ public void abrir() { // your code here } /** * <p>Does ...</p> * * */ public void cerrar() { // your code here } }

Código 11 - Clase Valvula

/** * <p></p> */ public class Variable { /** * <p>Represents ...</p> */ private Sensor Sensor; /** * <p></p> */ public Variable variable; /** * <p></p> * * @poseidon-type Variable */ public java.util.Collection variable_1 = new java.util.TreeSet(); /** * <p></p> */ public Grafico grafico; /** * <p></p> */ public Sensor sensor; /** * <p>Does ...</p> * * * * @return */ public Float getValor() { // your code here return null; } }

Código 12 - Clase Interfaz

5. Bibliografía

[1] Hanna Instruments Equipos Limitada

www.hannachile.com

[2] Verdtech Nuevo Campo S.A

http://www.verdtech.es/castellano/

[3] Sentek Sensor Technologies

IrriMAX 6.1 http://www.sentek.com.au/products/irrimax.asp?lang=en

[4] UML 2 Toolkit

Wiley Publishing Inc., Hans-Erik Eriksson, Magnus Penker, Bryan Lyons, David Fado 2004

[5] UMLTM Resource Page

http://www.uml.org/