Next: Interacción
Up: Entrada/Salida
Previous: Ejemplo de I/O
A la hora de evaluar las ventajas del modelo es bueno refrescar los objetivos de diseño planteados en [Sod99]. Recordemos que lo que buscábamos era lograr:
- Transparencia.
- Flexibilidad.
- Alto grado de Interacción.
- Escalabilidad.
- Portabilidad.
De momento dejaremos de lado Interacción; será tratada en futuras secciones. Así mismo remarcamos que la evaluación siguiente se limitará al modelo I/O presentado anteriormente.
- Portabilidad. ¿Que puede afectar la portabilidad de nuestro sistema I/O? Obviamente los detalles específicos de los sistemas operativos y dispositivos físicos a usar. Se desprende de lo anterior que no deberían existir problemas de portabilidad vinculados a los mappers, dado que justamente estos realizan conversiones entre formatos estándar. Donde si existirán problemas relacionados a la portabilidad es en los devices. La idea claro está, es confinarlos a estos. ¿Como lograr este cometido? Nuestra solución se basa en ver los dispositivos a través de un conjunto de interfaces bien definidas, que deben ser usadas en el desarrollo de las aplicaciones. De esta forma la aplicación debería funcionar independientemente de la implementación concreta del dispositivo; dígase: "Funcionar en forma independiente de los detalles específicos del ambiente", siempre y cuando existan implementaciones de los dispositivos, compatibles con los detalles del caso.
- Flexibilidad. Un sistema concebido hasta ahora como un par de familias ortogonales y fuertemente jerarquizadas, es sin duda una excelente solución si de crecer estamos hablando. Pensemos en el problema de incluir un nuevo mapper para reconocer formato BMP. Esta tarea se limitaría a agregar una hoja en el árbol de herencia, implementando los métodos definidos en la interface correspondiente, sin tener que cuestionarse siquiera la existencia de otros componentes del sistema.
- Escalabilidad. En complemento resulta cómodo extender mediante especializaciones la interface establecida en principio. Pensemos en bicotiDevice, la posibilidad de extender la interface para incluir elementos típicos de visualización, o la de sobre-extenderlo para destacar características particulares de la dimensión es un ejemplo del grado de escalabilidad alcanzable.
- Transparencia. La posibilidad de resolver los problemas a través de un pequeño grupo de interfaces abstractas, logra en sí mismo el objetivo de transparencia tal cual fue planteado en [Sod99].
Next: Interacción
Up: Entrada/Salida
Previous: Ejemplo de I/O
Claudio Risso
2001-06-02