Universidad de las Ciencias Informáticas
Facultad 6, Bioinformática
Título: “Aplicación web del ICA para la construcción de una base de datos de genes de microorganismos del rumen, basada en un rápido
algoritmo de reconocimiento de caracteres”
Trabajo de diploma para optar por el título de Ingeniero Informático
Autores:
Rachid Alí Grave de Peralta.
Yumis Figueroa Suárez.
Tutores:
MSc.Abiel Roche Lima.
MSc. Alina Agramonte Delgado.
Junio - 2009
Declaración de autoría
Declaración de autoría
Declaramos ser autores de la presente tesis y reconocemos a la Universidad de las Ciencias Informáticas los derechos patrimoniales de la misma, con carácter exclusivo.
Para que así conste firmo la presente a los ____ días del mes de ________ del año ________.
Rachid Alí Grave de Peralta Abiel Roche Lima ________________________ ______________________
Firma del Autor Firma del Tutor
Yumis Figueroa Suárez Alina Agramonte Delgado ________________________ _______________________
Firma del Autor Firma del Tutor
Datos de contacto
Datos de contacto MSc. Abiel Roche Lima.
Email: [email protected]
MSc. Alina Agramonte Delgado.
Universidad de las Ciencias Informáticas, Ciudad de La Habana, Cuba.
Email: [email protected]
Agradecimientos
Agradecimientos
Yumis Figueroa Suárez
En primer lugar quiero agradecerle a Rachid, por siempre confiar en mí y saber que yo podía llegar hasta aquí, porque aún cuando existieron momentos en los que pensé que este sueño no se me haría realidad ahí estaba él para demostrarme lo contrario; por brindarme su apoyo incondicional desde primer año y por ayudarme a ser hoy lo que soy: “el orgullo de mi familia”, por todo esto siempre le estaré eternamente agradecida, gracias por todo rachi.
Quiero agradecerle además a mi familia por estar siempre pendiente de mí, en especial a mi mamita por su sacrificio para conmigo; a mi abuela Bertha por su constante dedicación desde mis estudios en la secundaria básica, a mi abuela Estrella por su preocupación y cariño, a mi abuelo Alfonso por su compresión incondicional y todo el amor y cariño que he recibido de él desde pequeña. A mis hermanos Ernestico, Mabel y Ritica por ser tan buenos conmigo y por hacer que me sienta orgullosa de ellos. A Haydee, Karen y Ana por su inmenso cariño.
A mis amigos mermere y arian, por estar siempre a mi lado haciéndome saber que no estaba sola, por brindarme su mano cada vez que la necesitaba y por secar mis lágrimas cuando fue necesario. Ustedes han sido un tesoro para mí que siempre voy a conservar y me demostraron el verdadero significado de la amistad, por eso nunca los voy a olvidar.
A mi tutora Alina por su constante dedicación y entereza, por estar siempre
pendiente de nosotros y por ser una mujer tan maravillosa. A mis amistades que
de una u otra forma me brindaron su apoyo y se preocuparon por mí y a Roche
por crear este proyecto. A todos los profesores que han influido en mi desarrollo
profesional y a esta Revolución por haberme permitido realizar mis sueños.
Agradecimientos
Rachid Alí Grave de Peralta
Agradezco a mi familia, los que están y los que lamentablemente no. A mis padres por la excelente educación y el gran sacrificio a lo largo de todos estos años. A mis 4 abuelos por tan valiosos consejos y tanto cariño, los que ya no están… gracias. A mi hermana Karen, mi tío Ramón, mi hermano Roilan, mis tías, primos y la gente del Barrio. Eterno agradecimiento a mi tío Peralta y mi tía Sarita que han sido mis padres en estos cinco años brindándome su ayuda incondicional, indispensable en tantas ocasiones. Especial agradecimiento a Yumis por el inmenso amor, su apoyo desinteresado e incondicional, gracias a su esfuerzo y dedicación fueron posibles muchas cosas, a la familia de Yumis, por su ayuda y cariño. A nuestra tutora Alina, por tan alto apoyo profesional, total entrega, dedicación y por la gran persona que es. A Roche por enseñarnos a hacer ciencia, precursor de esta idea que logramos. A mis viejos y queridos amigos del pre, a mis amigos de Chaparra. A mis amigos del grupo y el
apartamento a quienes agradezco por ser como una familia en la UCI. A mis inseparables amigos Dairon y Raúl. A amigos especiales como Norlen, el Diole, Reynaldo Rosado, San Juan. A mis alumnos por enseñarme tanto. A la
revolución, a todo el que hizo posible la creación y funcionamiento de la UCI, a
los profesores de la carrera a nuestro querido comandante en jefe Fidel y al
pueblo trabajador de Cuba al cual me debo.
Dedicatoria
Dedicatoria
Yumis Figueroa Suárez
En primer lugar dedico esta tesis a mi mamá Rita, quien ha sido todo para mí, quien siempre confió en mí y supo que llegaría este momento tan especial en mi vida, la que nunca me dejó sola a pesar de haber pasado por momentos difíciles.
A mis abuelos Estrella, Bertha, Alfonso y Leonel por ser tan lindos conmigo, por apoyarme siempre en todo y por darme fuerzas para luchar y continuar cada vez que los miro.
A mi hermana Ritica por ser tan especial conmigo y por confiar en mí.
A mi tío Ernesto que más que un tío ha sido como un padre para mí y ha sido mi ejemplo a seguir en la vida desde pequeña, él siempre supo que yo llegaría hasta aquí cuando ni yo misma sabía lo que quería.
A papi, a quien quiero como mi propio padre porque siempre se ha comportado como tal y sus consejos han sido muy valiosos para mí y han servido de mucho en mi formación tanto humana como profesional.
A mi papá, porque a pesar de no ser de la forma que me hubiera gustado que fuera sé que me quiere y sé que puedo contar con él cuando lo necesite.
A mi “mermere” por ser mi amiga, por ayudarme a crecer, por regañarme cuando ha hecho falta, por ayudarme a corregir mis errores y por estar siempre ahí cuando la he necesitado.
A titi por ser tan especial para mí, por sus consejos, por siempre apoyarme y
preocuparse por mis estudios y por ser tan maravillosa como persona.
Dedicatoria
Rachid Alí Grave de Peralta
Dedico esta tesis a mi querida familia. Especialmente a mis padres por tanto
amor y sacrificio, mi hermana, mi tío Ramón y mis abuelos. A mis tíos Sara y
Paco que son mis padres también. A mi tutora Alina, a Yumis por todo, a mis
amigos de siempre, a la Revolución, a Fidel y al pueblo trabajador de Cuba.
Resumen
Resumen
Uno de los primeros pasos para la caracterización de un ecosistema es la descripción de los organismos que habitan en él. En estudios microbianos, las limitaciones experimentales han impedido en algunos casos la correcta caracterización y discriminación entre diversas comunidades. Con la incorporación de la tecnología necesaria para la secuenciación de genes en el Instituto de Ciencia Animal (ICA) surge la necesidad por parte de los investigadores de crear una base de datos propia para el almacenamiento y gestión de la información. En este trabajo se propone una aplicación web capaz de gestionar la información a partir de una base de datos de genes de ARN ribosomal 16S1 de microorganismos del rumen2, brindando los servicios básicos para el análisis de secuencias. Se destaca entre ellas una novedosa técnica para la clasificación taxonómica basada en un algoritmo de búsqueda de patrones de homología entre genes flanqueados por cebadores3 específicos extraídos de GenBank. Se consideraron las distancias de ocurrencias entre los cebadores dados, así como la permisividad de hasta tres errores y la presencia de caracteres degenerados. Nuestro sistema se validó utilizando un conjunto prueba de secuencias conocidas, las cuales fueron extraídas previamente del análisis y se lograron clasificar correctamente en un 87 % de los casos. Finalmente se logró asignar un grupo taxonómico4 a 304 microorganismos que se corresponden con un 92.68% de los microorganismos imposibles de cultivar en el laboratorio.
Palabras claves: microorganismos del rumen, análisis de secuencias, genes ARN 16S, clasificación taxonómica.
Tabla de contenido
Tabla de contenido
AGRADECIMIENTOS ... III DEDICATORIA ... V RESUMEN ... VII
INTRODUCCIÓN ... 1
CAPÍTULO 1:FUNDAMENTACIÓN TEÓRICA ... 5
1.1LA INFORMÁTICA Y SU RELACIÓN CON LAS CIENCIAS BIOLÓGICAS. ... 5
1.2BASES DE DATOS DE SECUENCIAS DE ADN. ... 5
1.3 MÉTODOS PARA EL ESTUDIO DE COMUNIDADES MICROBIANAS. ... 6
1.3.1ALGORITMOS DE CLASIFICACIÓN TAXONÓMICA A PARTIR DE SECUENCIAS DE ADN. ... 7
1.3.2ALGORITMO DE RECONOCIMIENTO DE CADENAS BASADO EN CEBADORES. ... 10
1.3.3EL PROBLEMA DE LOS K-DESAJUSTES DEGENERADOS ... 11
1.4TECNOLOGÍAS, METODOLOGÍAS Y HERRAMIENTAS A UTILIZAR. ... 12
1.4.1METODOLOGÍA DE DESARROLLO. ... 12
1.4.2LENGUAJE DE MODELADO (UML). ... 16
1.4.3HERRAMIENTAS CASE. ... 16
1.4.4HERRAMIENTAS DE DESARROLLO USADAS. ... 17
1.4.5SERVIDOR DE APLICACIONES. ... 17
1.4.6TECNOLOGÍA J2EE ... 18
1.4.7LENGUAJES DE PROGRAMACIÓN PARA LA WEB. ... 19
1.4.8FRAMEWORK USADOS. ... 20
1.4.9GESTORES DE BASES DE DATOS... 25
1.4.10HERRAMIENTAS BIOINFORMÁTICAS PARA EL ANÁLISIS DE SECUENCIAS DE ADN. ... 26
CAPÍTULO 2:CARACTERÍSTICAS DEL SISTEMA. ... 29
2.1MODELO DE DOMINIO. ... 29
2.1.1DESCRIPCIÓN DEL MODELO DE DOMINIO. ... 30
2.2ESPECIFICACIÓN DE LOS REQUISITOS DE SOFTWARE. ... 30
2.2.1 REQUERIMIENTOS FUNCIONALES. ... 30
2.2.2 REQUERIMIENTOS NO FUNCIONALES. ... 33
2.3DEFINICIÓN DE ACTORES Y CASOS DE USOS DEL SISTEMA. ... 34
2.4DIAGRAMA DE CASO DE USO DEL SISTEMA. ... 39
Tabla de contenido
2.5DESCRIPCIÓN DETALLADA DE LOS CASOS DE USO ... 41
CAPÍTULO 3:DISEÑO DEL SISTEMA. ... 55
3.1OBJETIVOS DEL DISEÑO. ... 55
3.2 PRINCIPIOS DE DISEÑO ... 55
3.3ARQUITECTURA DEL SISTEMA. ... 56
3.3.1PATRONES DE ARQUITECTURA Y DISEÑO. ... 56
3.3.2DIAGRAMAS DE CLASES DEL DISEÑO. ... 59
3.3.3MODELO DE DESPLIEGUE ... 61
3.4PROTOTIPOS DE INTERFAZ DE USUARIO. ... 62
3.5MAPA DE NAVEGACIÓN. ... 62
3.6DIAGRAMA DE SECUENCIA. ... 64
3.7DISEÑO DE LA BASE DE DATOS. ... 67
3.7.1DIAGRAMA DE CLASES PERSISTENTES. ... 67
3.7.2MODELO DE DATOS. ... 68
CAPÍTULO 4:IMPLEMENTACIÓN DEL SISTEMA. ... 70
4.1PROPÓSITO DE LA IMPLEMENTACIÓN. ... 70
4.2MODELO DE IMPLEMENTACIÓN ... 70
4.2.1DIAGRAMA DE COMPONENTES ... 70
4.3VISTA DE DESPLIEGUE ... 74
4.4DESCRIPCIÓN DE LA IMPLEMENTACIÓN DEL SISTEMA ... 75
4.4.1PROCESAMIENTO DE FORMULARIOS Y VALIDACIÓN ... 75
4.4.2ANÁLISIS DE LA SEGURIDAD DEL SISTEMA IMPLEMENTADO ... 75
4.4.3CÓDIGO FUENTE DE LAS PRINCIPALES CLASES ... 76
4.5PRUEBAS ... 78
4.6 VALIDACIÓN FUNCIONAL DEL ALGORITMO DE CLASIFICACIÓN TAXONÓMICA... 83
4.7CLASIFICACIÓN TAXONÓMICA DE LOS MICROORGANISMOS INDEFINIDOS IMPOSIBLES DE CULTIVAR EN EL LABORATORIO. ... 84
CONCLUSIONES ... 87
RECOMENDACIONES ... 88
REFERENCIAS BIBLIOGRÁFICAS ... 89
BIBLIOGRAFÍA ... 94
ANEXOS ... 96
Tabla de contenido
GLOSARIO DE TÉRMINOS ... 138
Introducción
1
Introducción
En los últimos 10 años la genómica se ha desarrollado como consecuencia de los avances realizados en biología molecular e informática, dos áreas de la ciencia que han tenido un desarrollo tecnológico enorme, generando una revolución en el conocimiento y en la comprensión de los procesos biológicos.
Las herramientas que se utilizan para el análisis individual de genes o pequeñas regiones cromosómicas, se aplican al análisis global de genomas completos, estudiando en conjunto los miles de genes, proteínas y metabolitos que constituyen un organismo, así como las complicadas redes de interacciones que operan entre ellos. La información generada es enorme y es clave para la identificación y el aislamiento de genes de interés y permite interpretar en términos moleculares los procesos biológicos. Para ayudar en este proceso han surgido poderosas herramientas bioinformáticas que permiten almacenar e interpretar esta información. En el mundo existen diversas bases de datos biológicas que almacenan una enorme cantidad de información, siendo las más representativas:
GenBank, perteneciente al Centro Nacional de Información Biotecnológica (NCBI, http:\\NCBI HomePage.htm) de Estados Unidos (1), la EMBL del Instituto de Bioinformática de Europa (EBI, http:\\EMBL Nucleotide Sequence Database.htm) y la DDBJ del Instituto Nacional de Genética de Japón (NIG, http:\\DDBJ Homepage.htm).
Existen también las bases de datos dedicadas a comunidades específicas de interés para el hombre, donde se guardan registros de los organismos que se han podido secuenciar y que habitan en un nicho común. Estas bases de datos son muy útiles para hacer estudios vinculados al comportamiento y evolución de las diferentes poblaciones que coexisten dentro de una comunidad. En nuestro país existen algunas bases de datos específicas de bacterias y hongos como son: la del Centro de Bioproductos Marinos (CEBIMAR) y la del Acuario Nacional de Cuba que guardan una extensa colección de especies marinas. Sin embargo dichas bases de datos se limitan a guardar la información, y no integran herramientas informáticas para el análisis y gestión de la misma. Los investigadores del Instituto de Ciencia Animal (ICA) estudian por su parte la comunidad microbiana del rumen, la cual constituye un ejemplo de ecosistema complejo donde residen billones de bacterias, archaeas, protozoos y hongos que por su variada constitución y la gran cantidad de información que guarda ha sido por mucho tiempo el eje de las investigaciones microbianas. Estos microorganismos cuyo hábitat natural es el rumen de organismos superiores juegan un papel importante en la digestión de los alimentos y suministro de nutrientes al hospedero. La comunidad microbiana que habita en el rumen, se caracteriza por su alta densidad de población, amplia diversidad y complejidad de
Introducción
2 interacciones. En este órgano encontramos representantes de los tres dominios: Bacteria, Archaea y Eucarya y se estima que existen más de 1011 células por mL-1, que representan alrededor de 200 especies bacterianas, entre 104-106 células por mL-1 distribuidos en 25 géneros de protozoos ciliados, así como alrededor de 103-105 zoosporas por mL-1 divididos en cinco géneros de hongos anaerobios y por último entre 107-109 partículas de bacteriófagos por mL-1) (2). En los últimos años se han establecido técnicas moleculares basadas en las secuencias de ARNr 16S para el estudio de estos microorganismos, lo que facilita la identificación y el monitoreo de estas poblaciones (3). Con la reciente incorporación de la tecnología necesaria para la secuenciación de genes en el ICA surge por parte de los investigadores la necesidad de crear una base de datos propia para el almacenamiento y gestión de la información, por lo que se plantea el siguiente problema científico: ¿Cómo automatizar el almacenamiento y gestión de secuencias de microorganismos del rumen?
El problema planteado se enmarca en el objeto de estudio: Aplicaciones web para el estudio de comunidades microbianas.
El objeto delimita el campo de acción: Aplicación web para la gestión de una base de datos de genes de microorganismos del rumen.
Para dar solución al problema se define como objetivo general: Desarrollar una aplicación web que permita el análisis y clasificación de secuencias a partir de una base de datos de genes de microorganismos del rumen.
A partir del análisis del objetivo general se derivaron los siguientes objetivos específicos:
Crear una base de datos de genes de microorganismos del rumen con todas las secuencias de ARNr 16S disponibles en GenBank.
Diseñar una aplicación web para el análisis y gestión de secuencias de la comunidad microbiana del rumen.
Implementar un algoritmo de reconocimiento de cadenas basado en cebadores para la asignación de un grupo taxonómico a microorganismos imposibles de cultivar en el laboratorio.
Para lograr los objetivos propuestos, se realizarán las siguientes tareas:
Introducción
3
• Obtención y revisión de todas las secuencias de ARNr 16S correspondientes a microorganismos del rumen disponibles en GenBank.
• Diseño y creación de una base de datos de genes para la comunidad microbiana del rumen.
• Investigación de las tendencias y tecnologías actuales para la construcción de aplicaciones web dinámicas, específicamente aplicadas al análisis de comunidades microbianas.
• Selección e incorporación de las herramientas bioinformáticas básicas para el análisis de secuencias.
• Estudio de los métodos para explorar las comunidades microbianas a partir de sus secuencias de genes.
• Implementación de un algoritmo de reconocimiento de cadenas basado en cebadores para la asignación de un grupo taxonómico a microorganismos imposibles de cultivar en el laboratorio.
• Realización de las actividades del flujo de trabajo requerimientos.
• Realización de las actividades del flujo de trabajo de diseño.
• Realización de las actividades del flujo de trabajo implementación.
• Validación funcional de la aplicación.
El presente trabajo está estructurado en cuatro capítulos. A continuación aparece de manera resumida el contenido de cada capítulo:
En el primer capítulo se hace un análisis del estado del arte de los recursos y herramientas bioinformáticas aplicadas al estudio de comunidades microbianas, como una fuente importante de investigación médica y biotecnológica. Se presentan los fundamentos teóricos y prácticos que cimientan el desarrollo de la aplicación, destacando la importancia de la misma. Se analizan también una serie de investigaciones previas que sirven como base para fundamentar el uso de los algoritmos
Introducción
4 propuestos. Por último se fundamenta el uso de las tecnologías, metodologías y herramientas a utilizar para el logro de un producto con calidad.
En el segundo capítulo, se brinda una breve caracterización del sistema a desarrollar, así como la descripción del modelo de dominio perteneciente al mismo. Además se modelan los artefactos correspondientes al flujo de trabajo de requerimientos.
En el tercer capítulo, se modelan artefactos correspondientes al flujo de diseño, para asegurarnos que el sistema cumpla con los objetivos propuestos. Se incluyen algunos de los diagramas de clases del diseño así como algunos casos de uso y el diagrama de despliegue.
En el cuarto capítulo, se implementa el sistema en términos de componentes partiendo de los requerimientos identificados y de los diagramas de clases del diseño elaborados. Se muestran fragmentos relevantes del código y describe los aspectos relacionados con la prueba de la solución propuesta teniendo en cuenta los casos de prueba de funcionalidad, específicamente pruebas de caja negra con la técnica de partición de equivalencia.
Fundamentación Teórica
5
Capítulo 1: Fundamentación teórica
1.1 La informática y su relación con las ciencias biológicas.
El desarrollo de la biotecnología y la informática se ha incrementado vertiginosamente en los últimos años. Durante la última década del siglo XX, los avances de la ingeniería genética y las nuevas tecnologías de la información, condicionaron el surgimiento de una disciplina que creó vínculos indisolubles entre la informática y las ciencias biológicas: la bioinformática. Esta puede definirse como la aplicación de la informática, las matemáticas y la estadística para organizar, analizar y entender problemas que involucren secuencias de nucleótidos, aminoácidos o cualquier otro tipo de información biológica relacionada. De esta forma, la bioinformática es capaz de responder al reto de manejar grandes cantidades de información mediante el empleo de robustas bases de datos al tiempo que provee herramientas para facilitar el análisis de la misma; actividad que manualmente sería imposible de realizar.
1.2 Bases de datos de secuencias de ADN.
La colaboración de las tres bases de datos más importantes del mundo hace posible acceder a casi toda la información de secuencias de ADN desde cualquiera de sus tres sedes: EMBL-BANK del Instituto europeo de Bioinformática (EBI, http:\\EMBL Nucleotide Sequence Database.htm), la DNA Data Bank of Japan (DDBJ) del Instituto Nacional de Genética de Japón (NIG, http:\\DDBJ Homepage.htm) y GenBank del Centro Nacional de Información Biotecnológica (NCBI, http:\\NCBI HomePage.htm) de los Estados Unidos. Si bien son mantenidas por distintos organismos en distintos países, existe una coordinación entre las distintas bases. Una secuencia enviada a cualquiera de las bases se verá reflejada en las otras dos en aproximadamente una semana, ya que esa es la frecuencia de actualización promedio entre las mismas. Estas bases de datos son de acceso público por lo que son consultadas continuamente e incorporan herramientas que permiten realizar búsquedas por homología, alineamientos de secuencias con el objetivo de dilucidar la función de un nuevo gen encontrado, o refinar la búsqueda de un cebador específico para amplificar un gen característico de una patología.
Fundamentación Teórica
6 Sin embargo en muchas ocasiones es necesario contextualizar el análisis a una comunidad en específico, por ello existen también las bases de datos dedicadas a comunidades de interés para el hombre, donde se guardan registros de los organismos que se han podido secuenciar y que habitan en un nicho común. Estas bases de datos son muy útiles para hacer estudios vinculados al comportamiento y evolución de las diferentes poblaciones que coexisten dentro de una comunidad. En nuestro país existen algunas bases de datos específicas como son: la del Centro de Bioproductos Marinos (CEBIMAR), elaborada en Acces y cuenta hasta el momento con una colección de 325 especies de bacterias así como la del Acuario Nacional de Cuba que guarda una extensa colección de 15 028 especies marinas correspondientes a 22 grupos taxonómicos diferentes. Sin embargo dichas bases de datos se limitan a guardar la información, y no integran herramientas informáticas para el análisis y gestión de la misma. Los investigadores del Instituto de Ciencia Animal (ICA) estudian por su parte la comunidad microbiana del rumen, la cual constituye un ejemplo de ecosistema complejo donde residen billones de bacterias, archaeas, protozoos y hongos que por su variada constitución y la gran cantidad de información que guarda ha sido por mucho tiempo el eje de las investigaciones microbianas. Estos microorganismos cuyo hábitat natural es el rumen de organismos superiores juegan un papel importante en la digestión de los alimentos y suministro de nutrientes al hospedero.
Debido a que muchos de los microorganismos existentes en el rumen presentan características únicas de la región y el clima propios de su hábitat, la generación de una base de datos propia de Cuba constituye una opción más prometedora para los investigadores del ICA que la utilización de las grandes bases de datos internacionales.
1.3 Métodos para el estudio de comunidades microbianas.
Se sabe que el conocimiento de la composición de un ecosistema en cuanto a variedad y cantidad de organismos que lo habitan constituye un paso importante para el entendimiento de la ecología del mismo. Esta información nos permite comprender las relaciones tróficas5, las rutas nutritivas, así como las interacciones competitivas existentes en diversos hábitats. Durante el estudio de plantas y animales así como de muchos protistas, los organismos pueden ser generalmente identificados y enumerados visualmente. Sin embargo en la mayoría de los procariontes no se pueden emplear estos métodos para su estudio por lo que los investigadores tienen que acudir al cultivo in vitro y a la caracterización de poblaciones individuales (4). En la década de los años 70, Woese y colaboradores (5) describen el uso del análisis comparativo de ARNr para estudios filogenéticos. Estos resultados no sólo
Fundamentación Teórica
7 proporcionaron las bases evolutivas para la taxonomía en procariontes, sino que también dieron lugar a la organización en tres reinos del mundo viviente: Archaea, Bacteria, y Eucarya (5)
Por otra parte existe una gran variedad de microorganismos imposibles de cultivar en el laboratorio, ya sea por las características inhóspitas de su hábitat o por su lento crecimiento, por lo tanto estos métodos son solo aplicables a un grupo limitado de comunidades (4). Estos métodos proveen una medida de la abundancia relativa o de la actividad metabólica de los integrantes de la población. A pesar de que existen muchas técnicas moleculares útiles para la identificación de cepas y especies a partir de una muestra de ADN extraída de cultivos puros, solo unas pocas sirven para la clasificación de mezclas heterogéneas de ADN. En los últimos años se han empleado métodos independientes del cultivo basados en el análisis de secuencias de genes de ARN ribosomal (ARNr) 16 y 18S, lo que ha permitido la identificación de miles de microorganismos anteriormente indefinidos (5) (6) y han sido empleados ampliamente para explorar la diversidad microbiana y entender la dinámica de sus comunidades. Los genes de ARNr son marcadores taxonómicos muy útiles porque se encuentran en todos los organismos conocidos conteniendo tanto regiones variables como altamente conservadas y tienen una baja tasa de cambio o un reloj molecular relativamente constante (7).
El análisis de comunidades microbianas usando genes de ARNr se puede llevar a cabo usando diversas aproximaciones simples. Dos de los métodos más usados son: la electroforesis6 en gel por gradiente desnaturalizante o de temperatura (DGGE o TGGE, de sus siglas en inglés “Denaturing or Temparature Gradient Gel Electrophoresis”) (8) el análisis del polimorfismo de longitud de fragmentos de restricción terminales de genes de ARNr 16S y 18S (T-RFLP, de sus siglas en inglés “Terminal Restriction Fragmente Length Polymorphisms”), ambos permiten el análisis de muchas muestras en un período de tiempo relativamente corto. Cada uno de estos métodos se basa en la capacidad de amplificación de los genes y proveen al investigador un perfil (o huella digital) de la comunidad que refleja la composición de la población numéricamente dominante en la muestra (4).
1.3.1 Algoritmos de clasificación taxonómica a partir de secuencias de ADN.
Durante los últimos cinco años, ha sido factible la inclusión de técnicas de metagenómica a gran escala basadas en el análisis de fragmentos de genomas de microorganismos de ambientes naturales, o el uso de metodologías alternativas de secuenciación como la pirosecuenciación para el estudio de la diversidad en comunidades microbianas naturales. Científicos como O. Bejá, E. F. DeLong o J. C.
Venter fueron pioneros en el uso de distintas técnicas metagenómicas para el estudio de comunidades
Fundamentación Teórica
8 microbianas marinas. Craig Venter en el año 2004 mediante la técnica metagenómica whole-genome shotgun sequencing (WGS) basada en la secuenciación al azar de los genomas de una comunidad microbiana, quien hizo posible la secuenciación de más de un millón de genes a partir de una muestra del bacterioplancton del Mar de los Sargazos detectando más de 1800 especies o filotipos (secuencias distintas del gen ARNr 16S (9). Dicha metodología ha permitido la identificación de más de un millón de nuevos marcos abiertos de lectura (ORFs, del inglés Open Reading Frames), muchos de ellos con la posibilidad de codificar nuevas enzimas. Recientemente, se aplicó esta tecnología para la exploración de la estructura de una comunidad microbiana marina en profundidad (10) y se pudieron secuenciar más de 900000 blancos (pequeños fragmentos de alrededor de 100 bp de los genes ARNr 16S) de dos comunidades microbianas bentónicas cercanas a una fisura volcánica que se encuentra a más de 1500 m de profundidad (11). En la actualidad, el acceso a dichas tecnologías es restringido y por lo tanto la mayoría de los laboratorios todavía utilizan la misma estrategia para determinar la diversidad microbiana. Dicha estrategia se basa en la amplificación por PCR7 (reacción en cadena de la polimerasa) de determinados marcadores moleculares como el gen 16S ARNr, a partir del ADN extraído directamente de los microorganismos presentes en una comunidad microbiana.
Posteriormente, se genera una genoteca8 y se secuencia un número determinados de clones para su análisis. Obviamente, cuantos más clones se secuencian más probabilidades se tiene de recuperar secuencias representativas de los microorganismos existentes. Seguidamente se procede a la identificación por microarrays9 de los genes de ARNr a través de una serie de experimentos de hibridación usando pequeñas sondas de ADN. Borneman y colaboradores en el 2002 acuñaron el método como Oligonucleotide fingerprinting of rRNA Genes (OFRG) (4) y sus resultados han sido comparados con los obtenidos por electroforesis en gel por gradiente desnaturalizante demostrándose las significativas ventajas del mismo. Dicho método se ha convertido en una poderosa estrategia para el análisis a gran escala de comunidades microbianas con aplicaciones en la medicina y la biotecnología.
Al igual que muchas investigaciones en ciencia experimental, el proyecto OFRG (12) ha generado una enorme cantidad de datos que necesitan ser almacenados, procesados y analizados. Se hacía imprescindible entonces un conjunto de herramientas apropiadas para el manejo y análisis de los datos que faciliten el proceso experimental. Liu y colaboradores (2005) (7) proponen un sistema web para el manejo de datos, que puede servir como repositorio para resultados experimentales entre otras informaciones relevantes del proceso de hibridación. Además el sistema integra herramientas para el diseño de grupos de prueba, de entrenamiento, el agrupamiento y análisis estadístico (Fig.1); cuya
Fundamentación Teórica
9 calidad tiene un fuerte impacto en las investigaciones de comunidades microbiana (3). A partir de genes de secuencia conocida y de secuencias blanco se genera una huella digital artificial, la cual constituye un vector binario cuyo valor en cada posición se define como 1 si la secuencia del gen contiene la sonda correspondiente y 0 si no la contiene. Dicha huella digital artificial constituye una aproximación para la estimación de la capacidad del método OFRG durante la identificación de microorganismos. Más específicamente, si el árbol filogenético generado a partir de la huella digital es muy similar al que se genera a partir de las secuencias de genes; entonces la huella es confiable y por lo tanto puede ser usada para la identificación de microorganismos indefinidos.
Figura 1: Sistema de manejo de datos para OFRG.
En la literatura existen gran cantidad de sistemas de base de datos de ADNr disponibles, entre ellos:
Ri-bosomal Database Project (13) y The European database of small subunit ribosomal RNA (14) por solo mencionar algunos. En ocasiones dichos sistemas toman las secuencias directamente de GenBank sin procesar, mientras que otros realizan alineamientos múltiples basados en la estructura secundaria del ARN. La mayoría de estas bases de datos de secuencias se focalizan en brindar variadas herramientas de análisis para la reconstrucción filogenética y búsqueda de similitud entre secuencias. En el presente trabajo se implementa y aplica el algoritmo descrito por Liu y colaboradores (2005) (7) para el estudio de la comunidad microbiana del rumen. El mismo propone un sistema para
Fundamentación Teórica
10 la adquisición de secuencias y construcción de una base de datos que posibilite la generación automática de una sub-base de datos de ADNr constituida por genes flanqueados por cebadores específicos. La especificación de una pareja de cebadores es imprescindible para la obtención de secuencias de un grupo taxonómico en particular. El sistema además le permite al usuario extraer aquellas secuencias que aunque no contengan los cebadores son homólogas al grupo taxonómico de interés, esto se hace empleando el algoritmo BLAST (del inglés, Basic Local Aligment Sequence Tool).
Lo más significativo del sistema es que reduce considerablemente el tiempo de procesamiento de las secuencias de semanas (proyecto OFRG) a horas (7).
1.3.2 Algoritmo de reconocimiento de cadenas basado en cebadores.
El sistema para la adquisición de secuencias y construcción de la base de datos provee una interface web asequible al usuario. El uso del sistema requiere de tres pasos fundamentales para la construcción de una base de datos personalizada. Primeramente el usuario debe cargar un fichero de secuencias de genes en formato FASTA al servidor que constituirá la Base de Datos Primaria (BDPri).
Dichas secuencias pueden ser adquiridas de GenBank u obtenidas de algún experimento de laboratorio. Luego es necesario especificar una pareja de cebadores que encierren al gen de interés.
Seguidamente se aplica a la BDPri un algoritmo degenerado de reconocimiento de cadenas para obtener un subconjunto de secuencias que contienen ambos cebadores. A este subconjunto se le llama Base de Datos Patrón (BDP), la cuál será usada como blanco en la subsecuente búsqueda por homología. La diferencia entre la BDPri y la BDP se define como Base de Datos Restante (BDR).
Finalmente se realiza una búsqueda por homología para encontrar aquellas secuencias de la BDR que pertenecen al mismo grupo taxonómico que las de la BDP a pesar de no haber macheado con los cebadores específicos.
Durante la etapa de generación de la BDP, es necesario aplicar un algoritmo degenerado eficiente y seguro para el reconocimiento de cadenas. Existen tres diferencias entre dicho algoritmo y el macheo de cadenas tradicional.
No solo se admiten errores, sino que la secuencia de una pareja de cebadores puede contener caracteres degenerados, lo cual significa que un carácter puede representar varias alternativas.
Se utiliza un par de secuencias en vez de una simple secuencia patrón.
Se consideran las distancias de ocurrencia entre ambos cebadores, para evitar falsos positivos.
Fundamentación Teórica
11 La última etapa de búsqueda por homología se hace necesaria porque es posible que la BDPri contenga fragmentos de genes que no contengan los cebadores o que los contengan parcialmente.
Para detectar dichas secuencias se realiza la búsqueda por homología utilizando el algoritmo BLAST, que genera alineamientos locales entre las secuencias de la BDR y de la BDP. Aquellas secuencias de la BDR que alineen con una puntuación significativa (e-value ≤ 0.05) con secuencias de la BDP se considerarán homólogas. De esta manera se puede inferir el grupo taxonómico a partir de la secuencia de un microorganismo imposible de cultivar en el laboratorio, lo que constituye la herramienta principal de la aplicación, por su notable repercusión en el estudio de las comunidades microbianas y específicamente en la comunidad microbiana del rumen.
1.3.3 El problema de los k-desajustes degenerados
El reconocimiento de cadenas de caracteres es uno de los principales retos en la ciencia de la computación debido a que usualmente representa un importante consumo de tiempo y memoria. Es por ello que muchas aplicaciones como procesadores de texto y analizadores de secuencias de genes demandan un algoritmo eficiente para el reconocimiento de cadenas de caracteres. Existen dos importantes variantes del problema de reconocimiento aproximado de cadenas de caracteres: el problema de los k-desajustes y el problema de las k-diferencias (15). En ambos casos, dados una cadena patrón P = p1 p2…pm y un texto T = t1 t2…tn donde m<n en un alfabeto Σ, y un entero k; el problema de los k-desajustes consiste en encontrar todas las ocurrencias del patrón P en el texto T permitiendo a lo sumo k desajustes. Mientras que el problema de las k-diferencias consiste en encontrar todas las subcadenas de T con distancia de edición ≤ k.
En el presente trabajo se implementa una variante del problema de los k-desajustes, definida por Liu y colaboradores en el 2005 (7) como el problema de los k-desajustes degenerados. El problema se formula de la siguiente forma:
Dado un conjunto D de secuencias de ADNr de longitud n y una pareja de cebadores a y b con longitud m que pueden contener caracteres degenerados; el problema consiste en identificar todas las secuencias que macheen con a y b permitiendo a lo sumo k desajustes. Las distancias de ocurrencia entre a y b están limitadas por la mínima distancia lmíny la máxima distancia lmáx. El problema de los k- desajustes degenerados permite k-desajustes, en adición a los caracteres degenerados. Para secuencias de ADNr, k ≤ 3 y la longitud de un cebador es alrededor de 20, dentro de los cuales más de 4 caracteres pudieran ser degenerados.
Fundamentación Teórica
12 En el trabajo publicado por Liu y colaboradores (2005) (7) se realiza una comparación entre los algoritmos de macheo aproximado de cadenas de caracteres más relevantes, entre los cuales se encuentran: (Baeza-Yates and Perleberg) (16), Baeza-Yates and Gonnet (16), y Tarhio and Ukkonen (17). Se demuestra experimentalmente la solución al problema de los k-desajustes permitiendo además caracteres degenerados mediante el uso de un algoritmo propio. La novedad del mismo consiste en la combinación de los algoritmos Baeza-Yates-Gonnet y Tarhio-Ukkonen (18), escogidos estos últimos por resultar más prácticos y acordes a la comparación de cadenas de ADN. Ambos son considerados la generalización del algoritmo de Boyer-Moore (19) para el macheo exacto de patrones, variando solamente en la vía para el cálculo de la distancia de cambio, siendo esta, la mínima cantidad de corrimientos del patrón antes de encontrar un carácter similar perteneciente a los k+1 caracteres del texto T en el alineamiento previo. El principio básico de estos algoritmos es ignorar en la búsqueda la mayor cantidad de caracteres posibles que no constituyan una ocurrencia del patrón e ir calculando las distancias de cambio. La combinación propuesta por Liu y colaboradores (7) consiste en escoger la máxima distancia de cambio calculada por cada uno separadamente e ir registrándola en una tabla teniendo en cuenta los k-caracteres degenerados. Los experimentos realizados comprobaron que la combinación de ambos algoritmos posee un tiempo de complejidad menor que cada uno por separado.
1.4 Tecnologías, metodologías y herramientas a utilizar.
Para un eficiente desarrollo de software es de vital importancia una correcta selección de las tecnologías, metodologías y herramientas que se usarán, poniendo en práctica esta importante premisa se hizo un estudio de las más usadas en la actualidad. Luego de un análisis riguroso, entre los desarrolladores y los clientes se tomaron los acuerdos de cuáles elegir para desarrollar la aplicación.
A continuación se presentan los principales aspectos considerados que fundamentan dicha elección.
1.4.1 Metodología de desarrollo.
En aras de concebir una forma ordenada de trabajo se hace necesario el uso de una metodología de desarrollo. La misma es un proceso que integra y guía las múltiples facetas del desarrollo y que además, ofrece criterios para el control y la medición de los productos. “Todo desarrollo de software es riesgoso y difícil de controlar, pero si no llevamos una metodología de por medio, lo que obtenemos es clientes insatisfechos con el resultado y desarrolladores aún más insatisfechos” (20). Durante la
Fundamentación Teórica
13 investigación realizada se tomaron en cuenta varias de las metodologías candidatas a usar, entre las cuales destacan:
Extreme Programming (XP) o programación extrema, una metodología reciente en el desarrollo de software. La filosofía de XP es satisfacer al completo las necesidades del cliente, por eso lo integra como una parte más del equipo de desarrollo. XP fue inicialmente creada para el desarrollo de aplicaciones donde el cliente no sabe muy bien lo que quiere, lo que provoca un cambio constante en los requisitos que debe cumplir la aplicación. Por este motivo es necesaria una metodología ágil como XP que se adapta a las necesidades del cliente y dónde la aplicación se va reevaluando en períodos de tiempo cortos. XP está diseñada para el desarrollo de aplicaciones que requieran un grupo de programadores pequeño, dónde la comunicación sea más factible que en grupos de desarrollo grandes. La comunicación es un punto importante y debe realizarse entre los programadores, los jefes de proyecto y los clientes. XP posee excelentes características válidas a la hora de escogerlo como metodología, estas son:
• Comunicación: Los programadores están en constante comunicación con los clientes para satisfacer sus requisitos y responder rápidamente a los cambios de los mismos. Muchos problemas que surgen en los proyectos se deben a que después de concretar los requisitos que debe cumplir el programa no hay una revisión de los mismos, pudiendo dejar olvidados puntos importantes.
• Simplicidad: Codificación y diseños simples y claros. Muchos diseños son tan complicados que cuando se quieren ampliar resulta imposible hacerlo y se tienen que desechar y partir de cero.
• Realimentación: Mediante la realimentación se ofrece al cliente la posibilidad de conseguir un sistema apto a sus necesidades ya que se le va mostrando el proyecto a tiempo para poder ser cambiado y poder retroceder a una fase anterior para rediseñarlo a su gusto.
RUP
Es un proceso de desarrollo de Software, o sea es el conjunto de actividades necesarias para transformar los requisitos de un usuario en un sistema software. Sin embargo, el Proceso Unificado de desarrollo de software es más que un simple proceso; es un marco de trabajo genérico que puede especializarse para una gran variedad de sistemas de software, para diferentes áreas de aplicación, diferentes tipos de organizaciones, diferentes niveles de aptitud y diferentes tamaños de proyecto (20).
Fundamentación Teórica
14 Existen tres características claves presentes en RUP, ellas son: dirigido por casos de uso, centrado en la arquitectura, e iterativo e incremental. RUP se descartó como posible metodología de desarrollo debido a que el equipo de desarrollo es pequeño, solamente dos personas y se necesitaba una metodología ágil. No obstante sí se estudió a fondo esta metodología para aprovechar sus ventajas y adquirir una experiencia valiosa en el desarrollo de la aplicación.
OpenUP
OpenUP es un proceso unificado, abierto, mínimo y suficiente lo que brinda la posibilidad de solo incluir el contenido fundamental y necesario. Conserva las características principales de la metodología de desarrollo RUP por lo que se aplica de forma iterativa e incremental, provee los componentes básicos que pueden servir de base a procesos específicos a pesar de no tener lineamientos para todos los elementos que se manejan en un proyecto. Es una forma de desarrollo ágil y ligero donde la mayoría de sus elementos fomentan el intercambio entre los equipos de desarrollo, y de colaboración sincronizando intereses y compartiendo conocimientos, principio fundamental que promueve las buenas prácticas para propiciar un ambiente saludable y de colaboración. Maximiza los beneficios al equilibrar las prioridades, permitiendo a los desarrolladores desarrollar una solución que cumpla con los requerimientos del proyecto, minimiza el riesgo al centrarse en la arquitectura y proporciona la retroalimentación y mejoramiento continuo al realizar prácticas que permitan incrementos progresivos a las funcionalidades.
Teniendo en cuenta lo antes explicado la metodología que se utilizará para guiar el desarrollo de las funcionalidades es OpenUp debido a sus características, descritas, y a ser este modelo el que más se ajusta a las necesidades del desarrollo de la aplicación, además de ser la metodología escogida y utilizada en el polo de Bioinformática de la facultad.
1.4.1.1 Patrones.
Un patrón es una pareja de problema/solución con un nombre, que codifica (estandariza) buenos principios y sugerencias. Con el paso de los años la utilización de patrones ha evolucionado dando mejor precisión al reflejar los requisitos reales y haciendo más fácil el trabajo con los sistemas. (21)
Fundamentación Teórica
15
Patrones de Casos de Uso.
CRUD (Crear, Buscar, Modificar y Eliminar)
Este patrón plantea la creación de un caso de uso, llamado “Información CRUD” o “Gestionar Información”, que modele todas las operaciones que se pueden realizar sobre una parte de información de un tipo determinado, ya sea crearla, leerla, actualizarla y eliminarla. Es importante destacar que este patrón se usa cuando todos los flujos contribuyen al mismo valor de negocio y son cortos y simples. Este patrón es usado en la aplicación para la gestión de información.
Actores múltiples:
Rol comúnSi dos actores interpretan el mismo papel en determinado caso de uso, este rol es representado por otro actor, que contiene de forma hereditaria los actores que lo comparten. Este patrón debe aplicarse cuando, desde el punto de vista de un caso de uso hay solo una entidad externa interactuando con cada instancia del caso de uso.
Patrones de diseño.
Es difícil imaginar un buen software sin el apropiado uso de los patrones de diseño, por esta fuerte razón se hizo énfasis en el estudio de los patrones de diseño más importantes. Se puede definir un patrón, además, como un proyecto o estructura de implementación que logra una finalidad determinada donde se pone de manifiesto la manera más práctica de describir ciertos aspectos de la organización de un programa. En el caso de los patrones computacionales, un software estructurado, modulado posee una mejor calidad y es más sencillo corregir errores, implementar mejoras y actualizaciones, debido a que un software que posee algún patrón de diseño es más sencillo de modificar que un software que no posee en absoluto un patrón. Los patrones de diseño proponen una forma de reutilizar la experiencia de los desarrolladores, para ello clasifica y describe formas de solucionar problemas que ocurren de forma frecuente en el desarrollo. Por tanto, están basados en la recopilación del conocimiento de los expertos en desarrollo de software, lo que lo convierte en su principal ventaja (22).
Fundamentación Teórica
16
1.4.2 Lenguaje de Modelado (UML).
UML es el lenguaje utilizado para visualizar, especificar, construir y documentar cada una de las partes que constituye un sistema de forma general. Permite la modelación de sistemas con tecnología orientada a objetos. No es una guía para realizar el análisis y diseño orientado a objetos, es decir, no es un proceso. UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. EL UML (Lenguaje Unificado de Modelado) es una de las herramientas más gustadas en el mundo para desarrollo de software, esta particularidad de su uso se debe a que permite a los desarrolladores de sistemas, generar diseños conforme a sus ideas de forma fácil y entendible. Por estas razones su uso se hizo vital para hacer un correcto modelado del sistema.
1.4.3 Herramientas CASE.
Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos y procesos del Ciclo de Vida de desarrollo de un proyecto (23). Entre las herramientas CASE para el modelado de artefactos que existen a nivel mundial están las herramientas MetaCASE, Embarcadero ER/Studio, Erwin, Umbrello, MagicDraw, Rational Rose y Visual Paradigm. Esta última herramienta CASE, Visual Paradigm for UML en su versión 6.1 es la seleccionada para el modelamiento de los diferentes artefactos.
1.4.3.1 Visual Paradigm como Herramienta CASE.
Se escoge Visual Paradigm porque es una herramienta CASE que soporta el UML como lenguaje de modelado. Además provee el Modelado del Proceso de Negocio, un generador de mapeo objeto - relación para Java, .NET y PHP. Una característica clave es su habilidad de generar no solo código del modelo de clases, sino también de la estructura de la base de datos relacional adecuados para sostener persistentemente la información contenida en las clases llamadas entidad. Genera la documentación del proyecto automáticamente en varios formatos como web, .pdf, .doc, y permite el control de versiones. Es una herramienta multiplataforma de modelado visual UML ya que aporta a los desarrolladores de software una plataforma de desarrollo para construir aplicaciones de calidad. Aporta una excelente interoperabilidad con otras herramientas CASE y muchos de los entornos IDE del mercado como NetBeans y Eclipse. Permite el uso de un lenguaje estándar común a todo el equipo de desarrollo que facilita la comunicación.
Fundamentación Teórica
17
1.4.4 Herramientas de desarrollo usadas.
El uso de una herramienta de desarrollo es vital durante el flujo de trabajo implementación, permitiendo así el completamiento de código, agilizar el trabajo del programador en todo momento y depurar el código.
1.4.4.1 Eclipse como entorno integrado de desarrollo (IDE).
Un entorno de desarrollo integrado o IDE es un programa compuesto por un conjunto de herramientas para un programador. Los IDEs proveen un marco de trabajo amigable para la mayoría de los lenguajes de programación. Eclipse es una plataforma de herramientas universal y portable que proporciona un framework para desarrollar aplicaciones y herramientas. Esto significa que distintos fabricantes pueden desarrollar e integrar sus herramientas con el workbench existente. El workbench es un conjunto de Java Frameworks y herramientas de desarrollo equipadas para constructores de herramientas. El entorno de trabajo presenta un entorno de desarrollo integrado en perspectivas personalizables. Las perspectivas son combinaciones formadas por vistas y editores que muestran los diversos aspectos de los recursos del proyecto y están organizados por el rol o la tarea del desarrollador. Se proporcionan más de una perspectiva en un momento dado, además de pasar de una a otra mientras se está trabajando. Eclipse ofrece un conjunto de valiosas ventajas entre las cuales se pueden apreciar solo por citar algunas que todo el contenido está almacenado en archivos.
Los recursos como clases java, archivos HTML, archivos XML (descriptores de despliegue), están almacenados en un sistema de archivo y así se puede tener fácilmente acceso a ellos (24). Es un IDE potente y posee un amplio soporte, su gran facilidad de integración mediante el uso de plugins lo hace compatible con muchos de los frameworks más usados. A estas características se le añade la experiencia de los desarrolladores en el uso de Eclipse.
1.4.5 Servidor de aplicaciones
.Un servidor de aplicaciones es un software que proporciona aplicaciones a los equipos o dispositivos cliente, por lo general a través de internet y utilizando el protocolo http. Los servidores de aplicación se distinguen de los servidores web por el uso extensivo del contenido dinámico y por su frecuente integración con bases de datos.
Fundamentación Teórica
18
1.4.5.1 Apache Tomcat.
Tomcat es un servidor web con soporte de Servlets y JSPs. Incluye el compilador Jasper, que compila páginas JSP convirtiéndolas en Servlets. El motor de servlets de Tomcat a menudo se presenta en combinación con el servidor web Apache. Tomcat puede funcionar como servidor web por sí mismo.
En sus inicios existió la percepción de que el uso de Tomcat de forma autónoma era sólo recomendable para entornos de desarrollo con requisitos mínimos de velocidad y gestión de transacciones. Hoy en día ya no existe esa percepción y Tomcat es usado como servidor web autónomo en entornos con alto nivel de tráfico y alta disponibilidad. Se decide optar por el uso de Tomcat en su versión 6.0 por las ventajas mencionadas.
1.4.6 Tecnología J2EE
J2EE puede ser considerada la mejor plataforma disponible actualmente para el desarrollo de aplicaciones empresariales (25). Esta plataforma es producto de las lecciones en desarrollo de software empresarial del pasado. Los beneficios que brinda la plataforma son bien conocidos y pueden resumirse en:
Simplicidad: el desarrollador puede concentrarse en la lógica del negocio, sin tener que invertir mucho tiempo en problemas de bajo nivel como: seguridad, transacciones, multi-threading, protocolos de seguridad, ambientes distribuidos, pool de recursos (por ejemplo acceso a base de datos), etc.
Separación de capas: J2EE promueve el diseño de una aplicación en múltiples capas, permitiendo en la mayoría de los casos la separación de presentación y funcionalidad, acorde con los principios de buenas prácticas de diseño.
Portabilidad: La aplicación J2EE puede ser migrada a otro servidor de aplicaciones con cambios mínimos.
Múltiples opciones de servidores: Dado que J2EE es un estándar, existe la posibilidad de escoger entre múltiples servidores, tanto productos comerciales como código abierto.
Fundamentación Teórica
19
1.4.7 Lenguajes de Programación para la Web.
Los lenguajes se clasifican en dos partes fundamentales que reconocen la propia arquitectura Cliente/Servidor de esta plataforma de desarrollo: los lenguajes del lado del servidor y los lenguajes del lado del cliente. Del lado del cliente se encuentran principalmente el lenguaje Java Script, que es el encargado de aportar dinamismo a la aplicación en los navegadores y además tienen la responsabilidad de ejercer funciones específicas como la validación y la impresión. Java Script es un lenguaje de programación muy utilizado por todos los programadores para crear pequeños programas encargados de realizar acciones dentro del ámbito de una página web. HTML es un lenguaje básico para los programadores que comienzan a incursionar en el campo del desarrollo web, es por eso que después del HTML, Java Script es considerado el nivel superior o el siguiente paso, que puede dar un programador de la web con vistas a decidirse por perfeccionar el estilo de sus páginas y la potencia de sus proyectos con el propósito de obtener un mayor alcance.
En el dominio de la red, los lenguajes del lado del servidor más ampliamente utilizados para el desarrollo de páginas dinámicas son el ASP, PHP, PERL y Java.
Java ofrece todas las ventajas de un lenguaje potente y robusto, pues fue diseñado para crear software altamente fiable (25). Es un lenguaje de programación basado en clases y orientado a objetos. Sus características de memoria liberan a los programadores de responsabilidades y errores.
Java es compilado en un código intermedio más abstracto que el código de máquina que es ejecutado por la máquina virtual de Java. Hereda su sintaxis de los lenguajes C y C++, pero cuenta con un modelo de objetos mucho más sencillo y elimina elementos de trabajo a bajo nivel como los punteros.
Una de las características más significativas de Java es que posee una arquitectura neutral, es decir, el compilador. Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. La independencia de la arquitectura representa solo una parte de su portabilidad. Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. Java como lenguaje se ajusta perfectamente al tipo de aplicación a realizar y cumple con las necesidades planteadas por los desarrolladores y clientes (26). Agregado a estas ventajas el uso de java se fundamenta debido al empleo de librerías escritas en este lenguaje para el análisis de secuencias y por ser el mismo definido por el polo de bioinformática de la facultad.
Fundamentación Teórica
20
1.4.8 Framework usados.
Un framework es un término utilizado en la computación en general, para referirse a un conjunto de bibliotecas, utilizadas para implementar la estructura estándar de una aplicación. Todo esto se realiza con el propósito de promover la reutilización de código, con el fin de ahorrarle trabajo al desarrollador al no tener que rescribir ese código para cada nueva aplicación que desee crear. Existen diferentes frameworks para diferentes propósitos, algunos orientados al desarrollo de aplicaciones web, otros para desarrollar aplicaciones multiplataforma, para un sistema operativo o lenguaje de programación en específico, entre otros. “El framework captura las decisiones de diseño que son comunes a su dominio de aplicación” (27). Un framework no sólo promueve la reutilización de código sino también la reutilización de diseño. Además las aplicaciones que se construyen tienen estructuras similares, son más fáciles de mantener y consistentes para los usuarios.
1.4.8.1 Framework para aplicaciones web.
Actualmente existen algunos frameworks para desarrollar aplicaciones web, que es de las ramas más importantes en las que se usan los frameworks. La mayoría de ellos utilizan el patrón de diseño MVC del cual se hablará más adelante en el capítulo 3.Todos los frameworks tienen características especiales que los hacen únicos para sobresalir y poder seguir en el mercado, además de poseer las siguientes características comunes:
• Utilizan un solo servlet que tiene la función de controlador, para toda la aplicación o gran parte de ella. Se configura un descriptor de despliegue para que todas las URL’s tengan que pasar forzosamente por dicho servlet.
• Una configuración, generalmente escrita en un archivo XML, en donde se le indicará al servlet controlador, a través de propiedades, a quien delegar la responsabilidad de atender la petición entrante. Algunas veces esas propiedades están indicadas de acuerdo a los URL’s y de acuerdo al URL entrante es como se delega la responsabilidad.
Las vistas pueden tener nombres claves, sin necesidad que exista una relación con el nombre del archivo de la vista. El framework se encarga de realizar dicha conversión para poder obtener el nombre de la vista que se tiene que cargar para que sea desplegada. La implementación de una vista con un nombre en particular puede cambiar sin afectar código del controlador. Cuando se va a desarrollar una
Fundamentación Teórica
21 aplicación web, el desarrollador se debe fijar en si desea realizar una aplicación extremadamente sencilla o si quiere desarrollar una verdadera aplicación web, que tendrá actualizaciones, correcciones y mejoras a futuro. Para esto es recomendable que se elija un framework de aplicación web que utilice el patrón web MVC. Con el fin de que se pueda hacer la separación entre los 3 elementos principales y pueda aprovechar todas las ventajas que brinda este patrón de diseño. Para poder aprovechar también las ventajas adicionales que brinda el framework para la integración con otras herramientas u otros servicios. A continuación se muestran algunos de los frameworks para aplicaciones web más populares: Struts, WebWork, Maverick y Spring. Para hacer una correcta selección se analizaron sus principales características, ventajas y desventajas (28).
Struts.
Struts es uno de los frameworks MVC más utilizados, ya que fue uno de los pioneros en el campo, fue creado por Craig McClanahan, creador del famoso motor servlet Tomcat, ambos son distribuidos por Apache. Este framework fue lanzado a mediados del año 2000, y a partir de esta fecha comenzó a tener popularidad, y en la actualidad existen algunos componentes extra que se adaptan a Struts, lo que le da un mayor campo de acción. Struts es código abierto, por lo que no requiere licencia para su uso. Además cumple una de las funcionalidades básicas que se mencionaron acerca de los frameworks para aplicaciones web, ya que implementa un solo controlador (ActionServlet) que evalúa las peticiones del usuario mediante un archivo configurable (struts-config.xml) para poder dirigirlas a un action que procesa el request. El lenguaje de programación que utiliza es Java, así como Java Beans como modelo.
Algunas de las ventajas y desventajas de Struts:
• Existe un variado número de trabajos y proyectos ya hechos lo que brinda un mayor número de ejemplos para poder tomar un punto de partida y de referencia.
• Brinda librerías de etiquetas usadas para mostrar la vista bastante útiles y eficientes que permiten la eficiente reutilización de código.
• Entre las desventajas de framework se puede observar que muchas veces puede ser difícil trabajar con los ActionForms, además de que el proyecto posiblemente desaparezca en los años venideros.
Fundamentación Teórica
22 Otra de las desventajas de Struts es que está muy ligado con la tecnología JSP, por lo que muchas veces se dificulta integrarlo con alguna otra tecnología para las vistas.
Maverick.
Este es otro framework MVC de código abierto que existe en el mercado, pero a diferencia de los demás este no cuenta con sus propias librerías de etiquetas. Sin embargo cumple con las funcionalidades típicas mencionadas, como el de tener un solo servlet controlador central como punto de entrada, el cual lleva el nombre de Dispatcher, que está definido en el Deployment Descriptor de la aplicación web (web.xml). Maverick cuenta con un archivo XML en el que se guarda toda la configuración del mismo (maverick.xml). Una característica de Maverick es que únicamente acepta un solo controlador central y un archivo de configuración por aplicación web, lo que muchas veces al desarrollar aplicaciones más grandes y complejas se puede volver confuso y difícil de configurar.
Maverick es un framework mucho más configurable que Struts, lo que brinda cierta flexibilidad, también incluye varias clases para poder extender y cambiar el flujo del trabajo o workflow en inglés. Es usualmente usado para crear nuevos controladores que sean capaces de procesar nuevas peticiones.
Los controladores son Java Beans, y el framework pone de manera transparente las propiedades de los beans. Una característica interesante de Maverick es el básico y fácil uso de la funcionalidad del Dispatcher. También es multiplataforma ya que ha sido adaptado para los lenguajes .NET y PHP.
Este es un framework más reciente ya que fue lanzado a mediados del año 2002.Una de las personas que ha trabajado en este proyecto fue Rickard Oberg, quien ha participado en proyectos como JBoss, entre otros.
WebWork
El framework WebWork está basado en el patrón de diseño de comandos o Command Pattern. Cada acción es un comando, que es creado para manejar un request, sus propiedades son puestas de manera transparente, ya que cada acción es un Java Bean. WebWork cuenta, al igual que Struts y Spring con su propia librería de etiquetas para JSP, las cuales ayudan a realizar distintas tareas de una manera más ágil, pero no es la única tecnología para vista que soporta, también incluye soporte para Velocity. Una de las ventajas de WebWork es que cuenta con una arquitectura simple y las clases son fáciles de extender. Pero como todo, tiene sus desventajas, la creación de una acción (action) por