jueves, 10 de octubre de 2013

OtrosTemas

PROGRAMACIÓN ORIENTADA A OBJETOS EN CAPAS

Les voy a explicar una experiencia propia y espero que le sirva de ayuda para quienes tienen que desarrollar algún sistema y se sienten medios perdidos para poder arrancar.

Historia

Hace un tiempo, aquellos años en los que aun no nacía, los sistemas informáticos no tenían bases de datos y existían lenguajes que tenían bases de datos que eran casi propias de cada lenguaje, en Cobol por ejemplo teníamos archivos tipo texto armados a mano, lo mismo en Basic y Pascal.
Luego sucedió algo aparecieron Clipper, Fox, ahí ya se comenzó a separar el lenguaje de programación de la base de datos.
Esto significa por ejemplo que Access, lo podemos usar desde JAVA, Visual Basic, C#, etc., la idea cambio y en principio tenemos un motor de base de datos o servidor de base de datos como Access, SQL, Oracle, MySQL y por otro lado un lenguaje de programación que accede eso Insertando, Modificando, Listando, etc.


Si nos ponemos a mirar tenemos 2 cosas separadas, por ejemplo una Base de Datos en SQL Server puede ser vista, desde el propio SQL Server o también desde un programa hecho en JAVA, C# o Phyton.
Si bien al parecer nuestros problemas se habían resuelto, pues era muy fácil crear una aplicación hecha para Windows y que corra en una red local. Pero en el mundo de la informática las cosas cambian, pues aparece el auge de la Web que vivimos hace años y aun continuamos viviendo y espera perpetuarse por siempre, ahora los sistemas de base de datos única se debía leer desde un software de red local y además desde la web, por tanto se agrega otro software posible a nuestro sistema hecho especialmente para la base de datos.


En la actualidad para aumentar la complejidad llegamos a los celulares, ahora el sistema tiene una base de datos, que se lee desde un PC, también desde la Web y también desde un teléfono móvil o celular.
Hasta ese momento la cosa era fácil se hace 1 base de datos y 3 programas totalmente distintos para cada dispositivo, solución fácil, pero claro había que hacer tres programas desde cero cada vez por supuesto esto aumentaba considerablemente los costos, pues tiene que hacerse cada uno le los tres programas, esto representa horas de trabajo, horas de personal, horas maquina, etc.

Actualidad

Fue ahí cuando aparecen los nuevos lenguajes con sus nuevas posibilidades y formas de programar, donde la programación orientada a objetos fue fundamental, de esta forma podíamos dividir ese software en capas independientes. Actualmente el software se divide en capas, la primera la base de datos, la segunda la capa del negocio, la tercera la capa de presentación. El siguiente esquema muestra esta división:

La capa de datos.

Es la base de datos, donde se encuentran creadas las tablas, vistas, procedimientos, trigger, etc.
La capa de acceso a datos.

Cuya misión es acceder a la base de datos y traer la información (registros de las tablas, cuando consultamos, o listamos), o llevarlos a la base de datos (cuando agregamos o modificamos), con esto logramos que todo ese código que puede estar hecho en C# lo re‐utilicemos sin importar si estamos en Web o Red Local (o Celulares).

La capa del negocio.

Consiste en las Entidades Relevantes, o sea Clases en C# que permitan contener esa información que se leyó desde la base de datos mediante el Acceso a Datos, será este un intermediario para que luego la interfaz muestre eso para PC o Web, todo el segmento de código C# de estas Clases de Entidades Relevantes se re‐utiliza sin importar de si es para PC o Web.

La capa de presentación.

Necesitamos que nuestro sistema pueda ser vistos en una PC local, en el Internet, o desde un celular, aquí creamos el software necesario para este proceso, es decir, la aplicación que correrá en un equipo local, la aplicación que correrá en la Web y la aplicación que correrá desde un celular.

Futuro

El día de mañana podemos utilizar el mismo sistema con otra base de datos que no sea Access, por ejemplo MySQL, cambiando solo el Acceso a datos, quedando el esquema así:
Logrando de esta forma un software que brinde la posibilidad de trabajar con una u otra base de datos (o más), sin necesidad de hacerlo todo de nuevo ya que reutilizamos el código.


En síntesis el desarrollo de un software en capas tiene muchísimas ventajas, piensen en cuantas horas de programación perderían si tienen que diseñar un sistema diferente para cada tipo de interfaz que se tenga que utilizar. Por otro lado, hay lenguajes más complejos que otros y cada uno con sus ventajas y desventajas. Muchas veces no van a tener la posibilidad de elegir con el lenguaje que tienen que programar por eso es bueno tener idea de cómo funcionan y para que se utilizan en general los distintos lenguajes de programación.

Por eso en la medida de lo posible cuando desarrollen un software traten siempre de mirar un poco mas delante en el tiempo teniendo en cuenta que posiblemente tendrán que modificarlo para agregarle prestaciones nuevas.

No hay comentarios:

Publicar un comentario