Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estacin de monitorizacin del clima Haga clic para modificar el estilo de subttulo del patrn
4/8/12
En este captulo se comienza con un conjunto de requisitos del sistema y se usa la notacin y proceso del desarrollo orientado a objetos para conducirnos a una implantacin.
4/8/12
ANLISIS Definicin de los lmites del problema Requisitos de la estacin de monitorizacin del clima
Este sistema proporcionar monitorizacin autnoma de varias condiciones climatolgicas. Especficamente debe medir:
El sistema tendr una forma de determinar la fecha y horas actuales, de forma que pueda informar de los valores mximos y mnimos de cualquiera de las cuatro medias principales durante las ltimas 24 horas.
El sistema tendr una pantalla que indicar continuamente todas las medidas principales y derivadas, as como la fecha y la hora. Mediante el uso del teclado, el usuario puede dirigir al sistema para que muestre el mximo o el mnimo en las ltimas 24 horas de cualquier medida principal, junto con la hora en que se dio tal valor.
El sistema permitir al usuario calibrar sus sensores respecto a valores conocidos, y fijar la hora, y fecha actuales. 4/8/12
Para confinar el problema y permitir as la exposicin de las cuestiones del anlisis y diseo del software, harn las siguientes suposiciones estratgicas:
La fecha y hora son suministrados por un reloj en tarjeta, accesible mediante entrada/salida por correspondencia de memoria. La direccin y al velocidad del viento se miden con una armazn que incluye una veleta (capaz de apreciar viento de 16 direcciones distintas) y un anemmetro de cazoletas (que avanza un contador con cada revolucin). La entrada del usuario se proporciona mediante un moderno teclado telefnico, gestionado por un circuito en tarjeta que suministra una seal sonora para cada pulsacin de tecla. La ltima entrada del usuario est 4/8/12 accesible mediante E/S por correspondencia de memoria.
Teclado
reloj
Pantalla LCD
Sensor humedad
Sensor humedad
Una de las caractersticas de un sistema orientado a objetos es que tiende a hablar con el vocabulario de espacio de su problema y representa s una mquina virtual que refleja la abstraccin que se hace de las entidades clave del problema. Se pueden aislar fcilmente las abstracciones software, envolviendo 4/8/12
Se puede resumir la abstraccin de una clase fecha/hora como sigue: Nombre: FechaHora Responsabilidades: llevar cuenta de la hora y fecha actuales Operaciones: horaActual fechaActual fijarFormato fijarHora fijarMinuto fijarSegundo fijarDia fijarMes fijarAnio 4/8/12
4/8/12
La clase SensorTemperatura sirve como una analoga de los sensores de temperatura hardware del sistema. Nombre: SensorTemperatura Responsabilidades: llevar cuenta de temperatura actual
4/8/12
Se puede expresar la abstraccin del sensor de presin atmosfrica en la siguiente especificacin: Nombre: SensorPresion Responsabilidades: llevar cuenta de presin atmosfrica actual 4/8/12
Debido a que se puede expresar las tendencias para las clases de sensores de presin y temperatura, el anlisis sugiere la invencin de una superclase comn, que se llamar SensorTendencia. Nombre: SensorTendencia Responsabilidades:
4/8/12
La abstraccin del sensor de humedad puede expresarse en la especificacin siguiente: Nombre: SensorHumedad Responsabilidades: llevar cuenta de la humedad actual, expresada como un porcentaje de saturacin de 0% a 100% 4/8/12
Una revisin de los requisitos del sistema sugiere algn comportamiento comn a las clases SensorTemperatura, SensorPresion, SensorHumedad. Los requisitos obligan a proporcionar un medio para informar de los valores mximos y mnimos de cada uno de estos sensores durante un periodo de 24 horas. Se podra capturar este comportamiento en la especificacin siguiente, comn a las tres clases:
4/8/12
La abstraccin del sensor de velocidad del viento puede expresarse en la especificacin siguiente: Nombre: SensorVelocidadViento Responsabilidades: llevar cuenta de velocidad actual del viento.
4/8/12 Operaciones:
Un anlisis rpido de dominio de las ltimas cuatro clases concretas (SensorTemperatura, SensorPresion, SensorHumedad y SensorVelocidadViento) revela otro comportamiento comn ms: todas estas clases deben saber como calibrarse a s mismas proporcionando una interpolacin lineal entre dos puntos de datos conocidos. En vez de repetir este comportamiento en las cuatro clases, se decide que sea
4/8/12
Se puede expresar la abstraccin del sensor final concreto para la direccin del viento en la especificacin siguiente: Nombre: SensorDireccionViento Responsabilidades: llevar cuenta de la direccion actual del viento, en trminos de puntos de 4/8/12
Aunque no forma parte de la jerarqua de sensores, la abstraccin del teclado para la entrada de usuario tiene una especificacin simple: Nombre: Teclado Responsabilidades:
4/8/12
Senso r
SensorCalibra do valorActual() fijarValorAlto( ) fijarValorBajo () SensorDireccio n Viento direccionActua l() SensorHistor ico ValorAlto() ValorBajo()
La abstraccin de una clase DispositivoLCD sirve para aislar el software del hardware particular que pueda utilizarse: Nombre: DispositivoLCD Responsabilidades: manejar el dispositivo LCD y ofrecer servicios para visualizar ciertos 4/8/12
Nombre: Temporizador Responsabilidades: interceptar todos los elementos temporizados y despachar la funcin callback correspondiente Operaciones: fijarCallback()
4/8/12
ESCENAR IOS
4/8/12
Monitorizar medidas bsicas del clima incluyendo la velocidad y direccin del viento, temperatura, presin atmosfrica y humedad. Monitorizar medidas derivadas incluyendo factor de enfriamiento por el viento, temperatura de roco, tendencia de la temperatura y tendencia de la presin atmosfrica. Visualizar los valores mximo y mnimo de una medida determinada. Fijar fecha y hora. Calibrar un sensor seleccionado. Encender el sistema.
Se aaden a esta lista dos casos de uso secundarios: Fallo de energa 4/8/12 Fallo de sensor
Una de las restricciones del sistema es que no se pueden tomar medidas a mayor velocidad de 60 veces por segundo ya que las medidas meteorolgicas cambian mucho mas lentamente. Frecuencias de muestreo:
o
Cada 0,1 segundos Direccin del viento. Cada 0,5 segundos Velocidad del viento. Cada 5 minutos atmosfrica y humedad. Temperatura, presin
CAL DE LOS OBJETOS DEL DIAGRAMA DE INTERACCIN ES ENTONCES RESPONSABLE DE REPRESENTAR LOS VALORES MUESTRADOS EN UNA NICA IINSTANCIA DE LA CLASE DISPOSITIVOLCD? Hacer un objeto separado que se responsabilice de este comportamiento. Por que permite encapsular en una clase todas las decisiones de diseo sobre la distribucin de la 4/8/12 pantalla.
Elementos estticos: partes de la pantalla que no se modifican como la rosa de los vientos. 4/8/12
Nombre: Gestor de pantalla Responsabilidades: Gestionar la distribucin de los elementos en el dispositivo LCD. Operaciones: dibujarLosementosEstaticos dibujarHora dibujarFecha dibujarTemperatura dibujarHumedad dibujarPresion dibujarEnfriamientoViento dibujarPuntoRocio dibujarVelocidadViento dibujarDireccionViento dibujarMaximoMinimo
Fuente de datos
Sensor Temperatura
Muestreador
Adquisici n datos
Gestor pantalla
Gestor pantalla
Fuente de datos
Sensor humedad
Sensor presin
Dispositivo LCD
Enfriamiento Viento
Sensor Temperatura
Punto Rocio
Muestreador
Adquisici n datos
Gestor pantalla
Sensor humedad
Dispositivo LCD
Mediciones derivadas
4/8/12
Visualizacin de los valores mximos y mnimos de una medida seleccionada. El usuario pulsa la tecla SELECCIONAR 2.El sistema muestra el mensaje SELECCIONADO 3.El usuario pulsa cualquiera de las teclas de VELOCIDAD VIENTO, TEMPERATURA, PRESIN O HUMEAD; cualquier otra pulsacin (excepto EJECUTAR) se ignora. 4.El sistema hace parpadear la etiqueta correspondiente. 5.El usuario pulsa la tecla ARRIBA o ABAJO para seleccionar la versin del valor mximo y mnimo en 24 horas, respectivamente; cualquier otra pulsacin de tecla(excepto EJECUTAR) se ignora. 6.El sistema muestra el valor seleccionado, junto con la hora de ocurrencia. 7.El control vuelve al paso 3 5.
1.
Nota: el usuario puede pulsar la tecla EJECUTAR para realizar o abandonar la operacin, momento en el que el mensaje parpadeante, el valor seleccionado y el mensaje SELECCIONADO se eliminan. 4/8/12 Parpadear etiqueta: hace que la etiqueta elegida parpadee o deje de
Mod o Ejecut ar
Seleccio nar
Tem p Tem p
Vient o
Ejecut ar Ejecut ar
vient o
DISE O
4/8/12
El siguiente paso en el proceso de desarrollo es articular el marco de referencia arquitectnica, de modo que se pueda tener una base estable sobre la que desplegar los puntos funcionales del sistema. En el dominio de adquisicin de datos y control de procesos, hay muchos patrones arquitectnicos posibles que se pueden seguir.
4/8/12
Este modelo toma el tiempo y lo divide en varios marcos (normalmente de longitud fija ) que divide posteriormente en submarcos cada uno contiene algn comportamiento funcional. La actividad puede ser distinta de un marco a otro. Por ejemplo se podra muestrear la direccin del viento solo cada 30 marcos por ejemplo si cada marco se le asigna 1/60 s, 30 marcos representan 0,5 segundos.
Procesar
Mostrar
Muestrear
Tiemp o
Procesar MAR CO
Mostrar
Muestrear
4/8/12
Presin
humedad
Arquitectura de monitorizacin del clima Otros dos agentes del sistema muestreador y Gestor entrada deben asociarse con la coleccin completa de los sensores, el empaquetarlos todos juntos en una clase contenedor permite tratar a los sensores del sistema 4/8/12 como un todo lgico.
Mecanismos de marcos
El comportamiento central de esta arquitectura se efecta por una colaboracin de las clases Muestreador y Temporizador.
Clase temporizador //Tics de reloj, medidos en 1/60 de segundo Class Temporizador{ Public: static fijarCallback (void (*) (Tic)); static comenzarTemporizacion(); static Tic numeroDeTics(); Private: .); 4/8/12
Se comienza con la Clase muestreador clase Temporizador Class muestreador{ que invoca una funcin callback. Public:
muestreador (); ~muestreador(); void fijarFrecMuestreo(NombreSensor, Tic); void muestrear(tic); Tic frecMuestreo() const; Protected: .);
Se conectan las clases Temporizador y Muestreador. En el fragmento de funcin principal solamente asigna la funcin callback al temporizador y comienza el proceso de muestreo. La arquitectura del sistema proporciona un interfaz para la clase sensores. Esta es una clase coleccion, y por esta razn hace que los sensores sean una clase fundamental coleccin.
Se especifica la clase muestreador con el fin de efectuar su asociacin con las clases sensores y a gestorPantalla.
La crecin del objeto muestreador conecta este agente con la colecci especfica de sensores y el gestor d epantalla particular que se usan en el sistema. La accin de esta funcin miembro es iterar a travs de cada tipo de sensor y a su vez, cada sensor concreto de este tipo en la coleccin. Para cada sensor que encuentra, muestrear comprueba si es el momento de muestrear su valor, y si es as referencia al sensor de la coleccin, toma su valor actual y entrega ese valor al gestor de pantalla asociado con la instancia muestreador. 4/8/12
EVOLUCI N
4/8/12
Planificacin de versiones
Se ha validado la arquitectura pasando por varios escenarios, se puede proceder con el desarrollo incremental de los puntos funcionales del sistema. Se comienza este proceso poniendo una secuencia de versiones, cada una de las cuales se construye sobre el anterior:
Desarrollar una versin con funcionalidad mnima, que monitorice slo un sensor. Completar la jerarqua de sensores. Completar las clases responsables de gestionar la pantalla. Completar las clases responsables de gestionar el interfaz de 4/8/12 usuario.
En esta versin evolutiva se espera trabajar sobre lo que previamente se haba completado sobre un sistema funcional mnimo, y dar termino a los detalles de esta jerarqua de clases. En una seccin anterior se advirti de la necesidad de la operacin valoractual, declarada en la clase base abstracta sensor.
4/8/12
Mediante el constructor de la clase, se dio a las instancias de esta clase un conocimiento sobre su nombre e identificacin. Esta es una forma de identificacin de tipos en tiempos de ejecucin, pero aqu es inevitable proporcionar esta informacin, por que los requisitos exigen que cada instancia de sensor tenga asignada una direccin E/S por correspondencia de memoria. Se pueden ocultar los secretos de esta correspondencia haciendo que esta direccin sea funcin del nombre e identificacin del sensor. Class sensor{ Public: Sensor(NombreSenesor, unsigned int id=0); virtual ~Sensor(); virtual float valorActual()=0; virtual float valorBruto()=0; NombreSensor nombre() const unsigned int id() const; Protected: }; 4/8/12
La declaracin de la subclase inmediata SensorCalibrado se construye sobre esta clase base. Class sensorCalibrado: public Sensor{ Public: SensorCalibrado(NombreSenesor, unsigned int id=0); virtual ~SensorCalibrado(); void fijarvalorAlto(float, float); void fijarvalorBajo(float, float); virtual float valorActual(); virtual float valorBruto()=0; Protected: }; Posteriormente se construye la subclase SensorHistorico que se construye sobre la clase SensorCalibrado. Class sensorHistoricco: public SensorCalibrado{ Public: SensorHistorico(NombreSensor, unsigned int id=0); virtual ~SensorHitorico(); float valorMaximo() const; float valorMinimo() const; Const char* horaDeValorMaximo() const; Const char* horaDeValorMinimo() const; Protected:}; 4/8/12
Se construye sensorHistorico que es heredada de sensorTendencia. Se declara tendencia como no virtual, por que no se desea que las subclases cambien su comportamiento. Finalmente se hace SensorTemperatura. la clase concreta
4/8/12
Y se captura la abstraccin de la clase Teclado en la que se ha aadido la operacin entradaPendiente para que los clientes puedan consultar si existe una entrada del usuario que aun no se ha procesado. Se captura la abstraccin de la clase Gestor Entrada que deriva de Teclado. Las instancias de la clase Muestreador, GestorEntrada y Teclado colaboran para responder a la entrada del usuario. 4/8/12
Incluye un nuevo objeto miembro repGestorEntrada: Class Muestrador{ Public: Muestrador(Sensor&, GestorPantalla&, GestorEntrada&); Protected: Sensor& respSensores; GestorPantalla& respGestorPantalla; GestorEntrada& repGestorEntrada; };
Esta clase muestrador siempre debe de tener una coleccin 4/8/12 una coleccin de sensores, un gestor de pantalla y un gestor
Se aade una llamada a procesarPulsacionTecla al comienzo de cada marco de tiempo. Que es el punto de entrada a la maquina de estados finitos que controla las instancias de esta clase:
1.
Puede representarse a los estados como objetos(polimorfismo). Se pueden usar literales de enumeracin para denotar cada estado distinto.
2.
Para la maquina de estados finitos de tamao modesto para la que se incorpora la clase GestorEntrada, es sufiente utilizar el segundo enfoque. Se escriben los nombres de los estados:
Void GestorEntrada::procesadorPulsacionTecla(){ If(repTecla.entradaPendiente()){ Tecla tecla=repTeclado.ultimaPulsacionTecla(); swich(repEstado){ case Funcionando: if (tecla==tSeleccionar) entrarSeleccionado(); else if(tecla==tCalibrar) entrarCalibrando(); else if(tecla==tModo) entrarModo(); case Seleccionado: . break; case Calibrado: . break; case Modo: . break; }}} 4/8/12
MANTENIMIE NTO
4/8/12
La implantacin completa de este sistema bsico de monitorizacin del clima abarca alrededor de 20 clases y monitoriza muchas condiciones climatolgicas interesantes pero se puede descubrir pronto que los usuarios quieren medir las precipitaciones. cul es el impacto de aadir un pluvimetro?
No hay que alterar radicalmente la arquitectura; simplemente hay que aumentarla. Utilizando como linea base la versin arquitetnica del sistema.
Crear una nueva clase SensorPluviosidad e insertarlo adecuadamente en la gerarquia de clases de sensor ya que es un tipo de sensor histrico. Actualizar la enumeracion NombreSensor. Actualizar el GestorPantalla para que sepa como mostrar valores de este sensor. 4/8/12 Actualizar GestorEntrada para que sepa como evaluar la tecla de