Por: Dania Rodríguez Villazón / dania.rodriguez@mtz.jovenclub.cu
Introducción
A lo largo de los siglos el hombre se ha interesado por incrementar su acervo de conocimiento histórico, cultural y tecnológico, es por ello que continuamente indaga en busca de nuevos horizontes.
Con el desarrollo de las tecnologías de la información se ha propiciado el enorme incremento de almacenamiento electrónico y la disponibilidad de una gran cantidad de equipos informáticos, hace, a su vez, posible que las bibliotecas incorporen estas tecnologías para satisfacer las necesidades informativas de sus usuarios. Esto trae consigo la introducción de servicios automatizados que perfeccionan la gestión de dichos centros.
La tecnología aplicada al manejo de la información ayuda a elevar el conocimiento, perfecciona en el ámbito educacional la puesta en práctica de los planes de estudio y permite la utilización de dichos medios como recursos pedagógicos en la actividad académica de los docentes y estudiantes. La tecnología de la información constituye una herramienta para la gestión del conocimiento en cualquier esfera de la sociedad.
Desarrollo
La gran revolución de la información, los nuevos cambios hacen que se tengan más necesidades de conocimiento. La nueva tecnología en nuestro entorno agiliza, optimiza, perfecciona algunas actividades que realizamos en la vida diaria. Gracias a la Web, millones de personas tienen acceso fácil e inmediato a una cantidad extensa y diversa de información. Los nuevos aparatos electrónicos como los computadores por medio de aplicaciones nos permiten realizar tareas que se hacían de forma manual de manera más rápida y eficaz. Existe una gran preferencia hacia los entornos Web por ser amigables y ágiles.
Tecnologías que forman parte del desarrollo sobre el entorno Web.
Arquitectura Cliente-Servidor
Existen diversas arquitecturas de base de datos, entre ellas:
- Arquitectura Centralizada: Se basa en la existencia de un servidor que almacena los datos y las aplicaciones que lo procesan. Los clientes se comportan como terminales y solo sirven para introducir datos desde teclado.
- Arquitectura de Servidor de archivos: Se basa en la existencia de uno o varios servidores que almacenan datos y estaciones de trabajo que ejecutan aplicaciones que los procesan. Los clientes son activos:
- Arquitectura Cliente–Servidor: Se basa en la existencia de dos tipos de aplicaciones ejecutándose de forma independiente. Una actúa como cliente y la otra como servidor. (ROSAS SALAZAR)
La arquitectura Cliente-Servidor es la más factible según la autora debido a que es un modelo para el desarrollo de sistemas de información, en el que las transacciones se dividen en procesos independientes que cooperan entre sí para intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el diálogo o solicita los recursos y servidor, al proceso que responde a las solicitudes.
Los principales componentes del esquema cliente/servidor son los Clientes, los Servidores y la infraestructura de comunicaciones. En este modelo, las aplicaciones se dividen de forma que el servidor contiene la parte que debe ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario.
El cliente envía mensajes directamente al servidor de aplicación el cual debe administrar y responder todas las solicitudes. Es el servidor, en dependencia del tipo de solicitud, quien accede y se conecta con la base de datos. Normalmente el servidor es una máquina bastante potente que actúa de depósito de datos y funciona como un sistema gestor de base de datos (SGBD).
Figura.1 Proceso desarrollado entre varios clientes y un servidor
Un sistema Cliente/Servidor es un sistema de información distribuido basado en las siguientes características:
- Servicio: unidad básica de diseño. El servidor los proporciona y el cliente los utiliza.
- Recursos compartidos: Muchos clientes utilizan los mismos servidores y, a través de ellos, comparten tanto recursos lógicos como físicos.
- Protocolos asimétricos: Los clientes inician “conversaciones”. Los servidores esperan su establecimiento pasivamente.
- Transparencia de localización física de los servidores y clientes: El cliente no tiene por qué saber dónde se encuentra situado el recurso que desea utilizar.
- Independencia de la plataforma, hardware y software que se emplee.
- Sistemas débilmente acoplados. Interacción basada en envío de mensajes.
- Encapsulamiento de servicios. Los detalles de la implementación de un servicio son transparentes al cliente.
- Escalabilidad horizontal (añadir clientes) y vertical (ampliar potencia de los servidores).
- Integridad: Datos y programas centralizados en servidores facilitan su integridad y mantenimiento.
Las principales ventajas del modelo Cliente/Servidor son las siguientes:
- Interoperabilidad: los componentes claves (cliente, servidor y red) trabajan juntos.
- Flexibilidad: la nueva tecnología puede incorporarse al sistema.
- Escalabilidad: cualquiera de los elementos del sistema puede reemplazarse cuando es necesario.
- Impactar sobre otros elementos. Si la base de datos crece, las computadoras clientes no tienen que equiparse con memoria o discos adicionales. Esos cambios afectan solo a la computadora en la que se ejecuta la base de datos.
- Usabilidad: mayor facilidad de uso para el usuario.
- Integridad de los datos: entidades, dominios, e integridad referencial son mantenidas en el servidor de la base de datos.
- Accesibilidad: los datos pueden ser accedidos desde múltiples clientes.
- Rendimiento: se puede optimizar el rendimiento por hardware y procesos.
- Seguridad: la seguridad de los datos está centralizada en el servidor.
Este tipo de arquitectura es la más utilizada en la actualidad, debido a que es la más avanzada y la que mejor ha evolucionado en estos últimos años.
Patrones de Diseño
Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad en la solución de problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.
Los patrones de diseño pretenden:
- Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
- Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
- Formalizar un vocabulario común entre diseñadores.
- Estandarizar el modo en que se realiza el diseño.
- Facilitar el aprendizaje de las nuevas generaciones de diseñadores para condensar conocimiento ya existente.(Patrón de diseño 2012).
Se utilizará MVC (modelo, vista, controlador) como patrón de diseño de la herramienta:
MVC (Modelo, Vista, Controlador) que es un patrón de diseño a tres capas que pretende separar la lógica de programación con la presentación al usuario y consiste en:
- Modelo: Son los programas que se encargan de interactuar con la base de datos. Prácticamente estos no tienen mucha lógica de consultas que retornan un resultado.
- Vista: Es el encargado de mostrar de forma ordenada los datos al usuario en pantalla. En estos programas está toda la parte de código HTML, JavaScript, CSS.
- Controlador: Estos programas son el “puente” entre los modelos y las vistas. Se encargan de gestionar las acciones que deben ser ejecutadas cuando son llamados. Como su nombre lo dice son los que controlan el flujo de la aplicación y tienen absolutamente toda la lógica del patrón.(BECERRA ARIAS 2012)
Aplicación Web
Se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar mediante un servidor web a través de Internet o de una intranet mediante un navegador. Con la introducción de Internet y de las Aplicaciones Web, se han abierto infinidad de posibilidades en cuanto al acceso a la información desde casi cualquier sitio. Esto representa un desafío a los desarrolladores de aplicaciones, ya que los avances en tecnología demandan cada vez aplicaciones más rápidas, ligeras y robustas que permitan utilizar la Web. Afortunadamente, se cuenta con herramientas potentes para realizar esto, ya que han surgido nuevas tecnologías que permiten que el acceso a una base de datos desde la Web, por ejemplo, sea un simple trámite.
Ventajas de las Aplicaciones Web:
- Ahorra tiempo: Se pueden realizar tareas sencillas sin necesidad de descargar ni instalar ningún programa.
- No hay problemas de compatibilidad: Basta tener un navegador actualizado para poder utilizarlas.
- No ocupan espacio en nuestro disco duro.
- Consumo de recursos bajo: Dado que toda (o gran parte) de la aplicación no se encuentra en nuestro ordenador, muchas de las tareas que realiza el software no consumen recursos nuestros porque se realizan desde otro ordenador.
- Multiplataforma: Se pueden usar desde cualquier sistema operativo porque sólo es necesario tener un navegador.
- Portables: Es independiente del ordenador donde se utilice (una PC de sobremesa, un portátil…) porque se accede a través de una página web (sólo es necesario disponer de acceso a Internet).
- La disponibilidad suele ser alta porque el servicio se ofrece desde múltiples localizaciones para asegurar la continuidad del mismo.
- Disminuye la probabilidad de que los virus dañen los datos porque éstos están guardados en el servidor de la aplicación.
- Colaboración: Gracias a que el acceso al servicio se realiza desde una única ubicación es sencillo el acceso y compartición de datos por parte de varios usuarios. Tiene mucho sentido, por ejemplo, en aplicaciones online de calendarios u oficina. (Aplicación web 2012).
Servidor
El servidor HTTP Apache es un servidor web de código abierto para plataformas Linux, Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP. Es el servidor más usado para aplicaciones Web.
Presenta las siguientes ventajas:
- Código abierto (su código fuente y otros derechos que normalmente son exclusivos para aquellas personas que poseen los derechos de autor son publicados. Esto les permite a los usuarios utilizar, cambiar y mejorar el software, y redistribuirlo).
- Multi-plataforma.
- Popular (fácil conseguir ayuda/soporte).
- Modular (el servidor consta de una sección core y diversos módulos que aportan mucha de la funcionalidad que podría considerarse básica para un servidor web), algunos de ellos son extensible (puede ser extendido con la inclusión de módulos externos) entre los cuales se encuentran:
- mod_cband – Control de tráfico y limitador de ancho de banda.
- mod_php – Páginas dinámicas en PHP.
- mod_security – Filtrado a nivel de aplicación, para seguridad. (Servidor HTTP Apache 2012).
Sistema gestor de bases de datos MySQL
Sistema Gestor de Bases de Datos (SGBD). Un software que proporciona servicios para la creación, el almacenamiento, el procesamiento y la consulta de la información almacenada en base de datos de forma segura y eficiente. Un SGBD actúa como un intermediario entre las aplicaciones y los datos, oculta la representación interna de los datos y ofrece un conjunto de funciones de más alto nivel.
Los SGDB:
- Permiten el acceso y actualización concurrente
- Proporcionan diferentes mecanismos de control de concurrencia
- Proporcionan mecanismos de control de acceso
- Proporciona un registro de todos los accesos a las bases de datos
- Los servicios de copia de seguridad (backup), la compresión de datos o la flexibilidad en añadir nuevos tipos de datos.(SICILIA 2008)
Entre estos gestores se encuentra, MySQL, que es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.(MySQL 2012)
Es idóneo para la creación de bases de datos con acceso desde páginas web dinámicas, así como para la creación de cualquier otra solución que implique el almacenamiento de datos y posibilite realizar múltiples y rápidas consultas. Está desarrollado en C y C++, por lo que facilita su integración en otras aplicaciones desarrolladas también en esos lenguajes.
Es un sistema cliente/servidor, por lo que permite trabajar como servidor multiusuario y de subprocesamiento múltiple, o sea, cada vez que se crea una conexión con el servidor, el programa servidor establece un proceso para manejar la solicitud del cliente, controlar así el acceso simultáneo de un gran número de usuarios a los datos y asegurar el acceso a usuarios autorizados solamente. (Sistema Gestor de Base de Datos 2013)
Características de MySQL
Las principales características de este gestor de bases de datos son las siguientes:
- Aprovecha la potencia de sistemas multiprocesador, gracias a su implementación multihilo.
- Soporta gran cantidad de tipos de datos para las columnas.
- Dispone de API’s en gran cantidad de lenguajes (C, C++, Java, PHP, etc.).
- Gran portabilidad entre sistemas.
- Soporta hasta 32 índices por tabla.
- Gestión de usuarios y contraseñas, mantiene un muy buen nivel de seguridad en los datos.
Una de las principales ventajas que tiene MySQL, es de ser un gestor de bases de datos de distribución gratuita (licencia GPL). Por esta razón se enlistan las demás ventajas que caracteriza a MySQL sobre otros sistemas gestores de bases de datos:
- Mayor rendimiento
- Mejores utilidades de administración
- Integración perfecta con PHP
- Sin límites en los tamaños de registros
- Mejor control de acceso de usuarios
- Cliente/Servidor
- Se pueden crear respaldos sin tener que cerrar los objetos bloqueados por usuarios
- Gratuito
- Multiplataforma
- Soporta gran cantidad de tipos de datos para columnas
- Dispone de API’s de lenguajes(C,C++,Java,PHP)
- Gran portabilidad entre sistemas
- Soporta hasta 32 índices por tabla
- Gestión de usuarios y contraseñas.(GUZMÁN REYES 2006)
Seguridad en los datos: Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración.(PECOS)
PHP (HypertextPre-processor)
PHP es un lenguaje de programación usado normalmente para la creación de contenido para sitios web con los cuales se pueden programar las páginas html y los códigos de fuente. PHP es un acrónimo recursivo que significa Hypertext Pre-processor y se trata de un lenguaje interpretado usado para la creación de aplicaciones para servidores, o creación de contenido dinámico para sitios web. Últimamente también para la creación de otro tipo de programas incluyendo aplicaciones con interfaz gráfica que use las librerías Qt o GTK+.
Otro lenguaje bien reconocido es: C# (leído en inglés “C Sharp”) es el nuevo lenguaje de propósito general diseñado por Microsoft para su plataforma .NET. C# es un lenguaje de programación que toma las mejores características de lenguajes preexistentes como Visual Basic, Java o C++ y las combina en uno solo. El hecho de ser relativamente reciente no implica que sea inmaduro. (Clikear.com.Origen y necesidad de un nuevo lenguaje. 2011)
Ventajas de PHP:
- Es un lenguaje multiplataforma.
- Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL.
- Leer y manipular datos desde diversas fuentes, incluyendo datos que pueden ingresar los usuarios desde formularios HTML.
- Capacidad de expandir su potencial al utilizar una enorme cantidad de módulos (llamados extensiones).
- Posee una amplia documentación en su página oficial, entre la cual se destaca que todas las funciones del sistema están explicadas y ejemplificadas en un único archivo de ayuda.
- Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
- Permite las técnicas de Programación Orientada a Objetos.
- Permite crear los formularios para la web.
- Biblioteca nativa de funciones sumamente amplia e incluida.
- No requiere definición de tipos de variables ni manejo detallado del bajo nivel. ( PHP (PHP Hypertext Pre-processor)).
Framework
La evolución en el desarrollo de aplicaciones web para múltiples usos, que utiliza a PHP como lenguaje de programación y tiene como objetivos mejorar la rapidez, productividad y profesionalidad de los productos que se obtengan, ha propiciado el surgimiento en el mercado para tal fin, de un conjunto de soportes que incluyen a su vez un sin número de bibliotecas de gran utilidad para desarrollar y unir los diferentes componentes de un proyecto, los denominados Frameworks.
Un framework, es una estructura de soporte definido, normalmente con artefactos o módulos de software concretos, mediante la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado para ayudar a desarrollar y unir los diferentes componentes de un proyecto.
Son diseñados con la intención de facilitar el desarrollo de software, de esta forma permite a los diseñadores y programadores pasar más tiempo en la identificación de requerimientos de software que tratar con los tediosos detalles de bajo nivel para proveer un sistema funcional, entre otras muchas cosas, nos ofrecen la posibilidad de usar formularios, acceso a bases de datos, envíos de mail u otros, sin necesidad de tener que programarlos desde cero.
Los frameworks ofrecen una infraestructura que permite a los desarrolladores tener un código más ordenado, limpio y fácil de actualizar, un código más seguro, robusto y mucho más eficiente.(BOLUFE CHÁVEZ 2009)
CodeIgniter
CodeIgniter es un Framework para el desarrollo de aplicaciones, una herramienta para crear webs mediante el lenguaje PHP. Permite desarrollar proyectos mucho más rápido que si se escribiera el código desde cero, proporciona una gran variedad de librerías para las tareas más corrientes, así como una interfaz simple y una estructura lógica para acceder a estas librerías. CodeIgniter permite minimizar la cantidad de código necesaria para una tarea determinada.
Ventajas:
- Amplia documentación disponible.
- Ligero y sin instalación.
- Compatibilidad con una amplia variedad de servidores y configuraciones.
- Flexibilidad, ya que no obliga a tener una determinada estructura de tablas, nombres de campos, ni adherirse a una forma de programar concreta.
Desventajas:
- Curva de aprendizaje: necesidad de aprender nuevas funciones, estructuras y métodos de programación.
- Dificultad para adaptar el código escrito en PHP tradicional. (BOLUFE CHÁVEZ 2009).
Conclusiones:
Creo que la palabra beneficio es la que mejor acoge lo referente a las nuevas tecnologías que forman parte del desarrollo del entorno web. No solo son fáciles de usar sino que podemos sacar el mejor provecho de ellas. No hay una mejor manera para crear un sitio web que empleándolas optimizando el tiempo de desarrollo del mismo. Es diseño, velocidad y eficiencia, tanto lo que está en juego en un mundo que va a pasos agigantados y donde la competencia cada vez más es mayor. Es innegable e indispensable su uso y ventaja en el mundo tecnológico.
Referencias Bibliográficas:
- ALARCÓN CAVERO, P. P. Arquitectura, 2002. [2013]. Disponible en: http://www-oei.eui.upm.es/Asignaturas/BD/BD/docbd/tema/Arquitectura.pdf
- ALCALDE PÉREZ, A. J. Página Web en un Centro de Salud. Mejoramos nuestra comunicación 2009. [2012]. Disponible en: http://www.saludinnova.com/practices/view/209/
- ÁLVAREZ, A. PROGRAMA RAMAL DE INFORMÁTICA EN SALUD, 2da Edición. 2004. [2012]. Disponible en: www.ineuro.sld.cu/
- ÁLVAREZ, S. Arquitectura Cliente servidor, 2010. [2012]. Disponible en: http://oposicionestic.blogspot.com/2011/06/arquitectura-cliente-servidor.html
- Aplicación web. 2012. [2012]. Disponible en: http://es.wikipedia.org/wiki/Aplicaci%C3%B3n_web
- ATOPO, M. Software libre y software propietario, 2011. [2013]. Disponible en: http://www.monografias.com/trabajos89/sotware-libre-y-propietario/sotware-libre-y-propietario.shtml
- BECERRA ARIAS , A. F. Desarrollo Web 2012. [ 2013]. Disponible en: http://programaweb184.blogspot.com/2011/11/hablemos-de-codeigniter.html
- BOLUFE CHÁVEZ, M. M. M., MAIKEL Frameworks para el desarrollo de aplicaciones con PHP, 2009. [2013]. Disponible en: http://www.monografias.com/trabajos70/frameworks-desarrollo-aplicaciones-php/frameworks-desarrollo-aplicaciones-php.shtml
- Centro Nacional de Información en Ciencias Médicas. [2012]. Disponible en: http://www.ecured.cu/index.php/Centro_Nacional_de_Informaci%C3%B3n_en_Ciencias_M%C3%A9dicas
- Cliente-servidor. 2012. [2012]. Disponible en: http://es.wikipedia.org/wiki/Arquitectura_cliente-servidor
- Clikear.com.Origen y necesidad de un nuevo lenguaje. . 2011. [2013]. Disponible en: www.clikear.com/manuales/csharp/c9.aspx
- ECUGRUPO, S. Portal: Salud en Cuba. «Estructura del Sistema Nacional de Salud», 2012]. Disponible en: http://www.ecured.cu/index.php/Portal:Salud_en_Cuba
- GARCÍA MORALES, J. C. El registro informatizado de salud. Experiencias de su utilización en el municipio Cerro., 2012]. Disponible en: http://www.rcim.sld.cu/revista_18/articulos_htm/registroinformatizado.htm
- GENOVEVA, E. T., NIMIA OLIMPIA El sistema de calidad del ICID, la documentación de software y RUP, 2007, 1: 39.
- GONZÁLEZ VALDÉS, D.; P. C. ALEMÁN SÁNCHEZ, et al. Impacto de la informatización en la sociedad y estomatología cubanas 2007. [2012]. Disponible en: http://scielo.sld.cu/scielo.php?pid=S0034-75072007000200006&script=sci_arttext
- GUZMÁN REYES, D. Bases de datos distribuidas con una solución LAMP(Linux,Apache,MySQL y PHP), Autónoma del Estado de Hidalgo, 2006. 220. p.
- J. MCCABE, T. A Complexity Measure. IEEE Transactions on Software Engineering. 1976. p.
- JUVENTUD REBELDE, G. D. D. Cuba, lo más novedoso en informatización, 2009. [2012]. Disponible en: http://www.juventudrebelde.cu/cuba/2009-03-08/cuba-lo-mas-novedoso-en-informatizacion/
- Lenguaje Unificado de Modelado. 2012. [2013]. Disponible en: http://es.wikipedia.org/wiki/Lenguaje_Unificado_de_Modelado
- LETELIER, P. Metodologías ágiles para el desarrollo de software: eXtreme Programming (XP), 2006. [2013]. Disponible en: file:///I:/Nueva/M%C3%A9todolog%C3%ADas%20%C3%A1giles%20para%20el%20desarrollo%20de%20software%20eXtreme%20Programming%20%28XP%29.htm
- LÓPEZ HUNG, E.; L. CUEVAS RODRÍGUEZ, et al. Sistema informático para el procesamiento transaccional y analítico de la información relacionada con la vigilancia epidemiológica del dengue, 2012. [2012]. Disponible en: http://scielo.sld.cu/scielo.php?pid=S1029-30192012000700020&script=sci_arttext
- MAIKEL. Crear e implementar el patrón de diseño Singleton en PHP, 2008. [2013]. Disponible en: http://www.cristalab.com/tutoriales/crear-e-implementar-el-patron-de-diseno-singleton-en-php-c256l/
- Ministerio de Salud presenta página web para los enfermos renales. La Razón, 2010. [2012]. Disponible en: http://redgealc.org/ministerio-de-salud-presenta-pagina-web-para-los-enfermos-renales/contenido/3266/es/
- MORENO, J. Técnicas de evaluación de software. 2005. p.