jueves, 23 de mayo de 2013

4.3 Diseño de Sistema.




Durante el diseño de sistema se toman condiseraciones en base al ambiente de implementación teniendo como objetivo lograr una buena rastreabilidad de la arquitectura de objetos al código final. Estos objetos deben ser vistos como abstracciones del código a ser escrito donde, por ejemplo, un típico objeto sería representado por un archivo en el sistema, como es el caso de Java. En otros lenguajes, como C++, en lugar de un archivo se escriben dos, uno correspondiente a la interface del objeto y el otro a su implementación. En general, el diseño de sistema incluye diversos aspectos como:
§  Selección del lenguajes de programación a utilizarse, típicamente estructurados u orientados a objetos;
§  Incorporación de una base de datos, típicamente relacionales, relacionales extendidos u orientados a objetos;
§  Acceso a archivos, en sus diferentes formatos;
§  Inclusión de bibliotecas, como por ejemplo, interfaces gráficas (GUI), bibliotecas numéricas y de estructuras de datos;
§  Consideraciones de tiempo real, si las hay;
§  Aspectos de procesamiento, como concurrencia, paralelismo y distribución;
§  Aspectos transaccionales, típicamente en el acceso a bases de datos;
§  Organización del sistema en subsistemas;
§  Asignación de subsistemas a componentes de hardware y software.
Estos aspectos pueden variar radicalmente entre uno y otro sistema y también pueden afectar de gran manera la arquitectura resultante del sistema. En general existen diversos enfoques para la incorporación del ambiente de implementación a la arquitectura del sistema:
§  Agregando clases abstractas o interfaces que luego serán especializadas según el ambiente de implementación particular. Esto es posible hacer, por ejemplo, cuando el lenguaje de programación, como en el caso de Java, es común a los diversos ambientes.
§  Instanciando objetos especializados que administren los aspectos particulares del ambiente de implementación particular. Esto puede significar una integración parcial o completa de componentes adicionales a la arquitectura del sistema. Por ejemplo, una integración con las interfaces nativas de Java (JNI) para manejo de aspectos de bajo nivel del ambiente.

§  Configurando múltiples versiones del sistema correspondientes a diferentes plataformas. Este es el enfoque más flexible, aunque por lo general el de mayor costo de desarrollo. Por ejemplo, cambios radicales en los lenguajes de programación incluyendo diseños para lenguajes estructurados.
En este capítulo simplificaremos de gran manera el efecto del ambiente de implementación. Utilizaremos a Java como lenguaje de programación bajo un procesamiento secuencial y con interfaces gráficas también escritas en Java. Para el Sistema de Reservaciones de Vuelos también incluiremos integración con bases de datos y archivos externos, algo que será manejador a través de las clases interface.

Interfaces Gráficas
Las interfaces gráficas tienen como aspecto esencial que toda interacción con el usuario es a través de elementos gráficos, como lo son los botones, menús y textos. En lo que se refiere a la aplicación, todo sistema que interactúe mediante interfaces gráficas está dirigido por eventos. Estos eventos corresponden al movimiento del ratón, el oprimir o soltar uno de sus botones, el oprimir una tecla, junto con los que no son directamente iniciados por el usuario, como los eventos de desplegar una pantalla o interrumpir un programa.
El desarrollar un sistema dirigido por eventos significa que la aplicación debe desde un inicio considerar un diseño adecuado. Por ejemplo, en el caso de Java, se debe inicialmente escoger una de sus bibliotecas gráficas, como AWT, para luego utilizar el manejo apropiado a través de clases como Event.
El uso de estas bibliotecas también afecta la lógica de diseño, ya que se debe contemplar, por ejemplo, en que momentos es apropiado procesar nuevos eventos y cómo se inicializará el sistema. Estas consideraciones y su efe cto sobre el resto del sistema serán discutidas más adelante durante el diseño de objetos.

Bases de Datos
El aspecto de bases de datos siempre juega un papel fundamental en los sistemas de información. La decisión estratégica más importante en nuestro contexto es si utilizar bases de datos relacionales o las orientadas a objetos. Dado su amplia utilización y la situación actual en el mercado, escogeremos para nuestro desarrollo una base de datos relacional utilizando el lenguaje SQL estándar. Simplifcaremos al máximo el diseño de la base de datos para minimizar su efecto sobre el sistema completo. Más bien, demostraremos como es posible diseñar buenas clases que permitan en un futuro cambiar de manejadores de bases de datos. 

No hay comentarios:

Publicar un comentario