Sistema de Gestión de Riesgos de Seguridad Informática.
Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas
Autor(es): Rocio Madrigal Proenza Dayán Hernández Pérez
Tutor: Ing. Dariena Ramírez Lujan
La Habana Cuba
Junio 2009
~ II ~
"Creer en la juventud es ver en ellos la generación del mañana, una
generación mejor que nuestra propia generación, una generación con
muchas más virtudes y muchos menos defectos que las virtudes y los
defectos de nuestra propia generación."
~ III ~
exclusivo.
Para que así conste firmo la presente a los ____ días del mes de ________ del año ________.
Rocio Madrigal Proenza Dayán Hernández Pérez
______________ ______________
Firma del Autor Firma del Autor
Dariena Ramírez Lujan
______________
Firma del Tutor
~ IV ~
DATOS DE CONTACTO
Tutora Ing. Dariena Ramírez Lujan
Graduada en el año 2007, con Título de oro, se desempeñó como profesor de Ingeniería de
Software I y II, asignatura de la cual fue Alumna Ayudante por 2 años. Ocupó en ese año el
cargo en la producción de Asesora de Calidad de la Facultad 2. Actualmente se desempeña
como Analista Principal de uno de los proyectos de dicha Facultad.
~ V ~
AGRADECIMIENTOS Compartidos:
Agradecemos en primer lugar a la Revolución Cubana y a nuestro querido Cdte. Fidel Castro Ruz por crear esta Universidad y darnos la oportunidad de estudiar en ella.
A nuestra tutora Dariena por brindarnos su apoyo y dedicación durante todo este tiempo.
A todos aquellos que de una forma u otra estuvieron presentes en la realización de este trabajo.
Y un muy especial agradecimiento a la Universidad de Ciencias Informáticas (UCI), sin ti no hubiese sido posible la realización de este sueño.
Gracias.
Agradecer primeramente a mi madre Carmen, tú eres mi mayor impulso, por ti soy lo que soy y he logrado mi principal objetivo en la vida, gracias por confiar en mí, te quiero mucho.
Agradecer a mi compañero de tesis Dayán que tan malos momentos pasamos juntos, pero logramos vencer.
A Yadir, gracias por brindarnos incondicionalmente un poco de tu tiempo, tú formas parte especial en la realización de esta tesis.
A mi novio Rosendo, gracias, fuiste más que eso durante todo este tiempo de trabajo, tu apoyo fue muy importante para mí.
A todos mis hermanos, amigos y familia, gracias por existir y estar siempre a mi lado, muchas
Gracias.
~ VI ~
No podría faltar el agradecimiento a todos los compañeros de estudio durante estos 5 años.
Gracias universidad por acogerme entre tus brazos por tan largo tiempo.
Rocío.
A la Revolución y a Fidel, por haber creado este proyecto futuro del cual hoy formo parte.
Agradezco infinitamente a todos mis amigos, por apoyarme incondicionalmente y por acompañarme en estos cinco años. En especial a Adrian Roberto Correa, Maykel Yañez Pérez, Jorge Javier García, y Elier Carmenate Valero, que mas que un amigo, es mi hermano.
Agradezco también a Roberto Pérez Amaro, Indira Bello, Mario Alberto Albares y a Julio Cesar Díaz Vera, por haberme brindado un poco de su tiempo y por haber aportado cada uno un granito de arena en la elaboración de esta tesis.
Gracias a todos.
Dayán.
~ VII ~
DEDICATORIA Por todo lo que he sido y seré, por ser incondicional cuando te necesito y por darme todo a cambio de nada, Mamá, este trabajo está dedicado a ti. Eres lo mejor del mundo, el ser más amable y comprensible. Recuerda que siempre estaré contigo. Te felicito porque no solo me gradúo yo, sino también tú, que eres la protagonista principal en esta etapa de mi vida que concluye y en la que está por venir, porque gracias a ti existo.
A Manolo, tu que has sido mi padre, también tengo que agradecerte lo que soy, me has dado un buen ejemplo paternal y gracias a ti se como debo seguir por el camino del bien.
A la persona que tengo todos los días a mi lado aunque se encuentre lejos, a ti Rosendo, mi amor, que has estado desde el primer día que nos conocimos, acompañándome en los buenos y malos momentos, siempre levantándome cuando me he quedado sin fuerzas. Este trabajo también es tuyo.
A mis hermanos, especialmente a Yordis, aunque no seas muy expresivo se que me quieres mucho y deseas lo mejor para mi. Además por darme esas hermosas sobrinas que adoro con el alma.
A mi hermanita Rosalia, esto es tuyo, espero que sigas mi ejemplo y te hagas una persona de bien, pero siempre recuerda: se tu misma!
A mis sobrinos y primos que comienzan ahora a dar sus primeros pasos por la vida, lo mismo les digo, sigan el camino del bien y luchen por lo que quieran, pero sin maldad, sin tener que
lastimas a nadie. A los que ya son mayores, gracias por estar ahí.
~ VIII ~
Nunca dejaría de mencionar a Mare, mi tía. Ha sido como una madre para mi, gracias por apoyarme y comprenderme siempre que te necesité, si hoy tengo este título, es gracias a ti, te quiero, esto es tuyo.
A todos mis tíos que representan un papel importante en mi vida, han sido como padres para mi, tío Chalo, Papo, Raulito, Andrés, Enrique y muy especial a mi tío Eddy (que dios te tenga en la gloria), se que están muy orgullosos de mi.
Mis tías, gracias por existir, las quiero mucho. Todas me han dado un buen ejemplo, de cada una he logrado adquirir un modelo a seguir. Gracias tía Julia, has sido para mí: tía, madre y padre. Odelvis, eres lo máximo y te quiero un montón. Mirtha, Odalis y Beba, las quiero y sepan que en mí tienen la hija que no tuvieron y conmigo pueden contar para lo que sea, esto también es de ustedes.
A mis abuelos, los quiero tanto y les agradezco tanto por haber traído al mundo a esas personas que me formaron y me dieron la vida, mis padres. Sin ustedes yo no existiera.
Padre, a ti también te dedico esta tesis, no has sido el mejor ejemplo, pero te quiero mucho y se que tu a mi. Gracias por darme tan hermosos hermanos. Se que en este día se cumple uno de tus sueños, el de verme graduada.
Hay unas personas especiales en mi vida, esas que ayudaron a mi madre con mis cuidados en
los primeros años de vida. A mi segunda madre Lorenza (chichita) junto con su familia,
gracias por acogerme entre ustedes como una más, los quiero a todos y no los defraudaré. A
Irene y Yuni, lo mismo les digo, ustedes son muy importantes para mí y aunque estén lejos
nunca las olvidaré, este sueño se cumplió también gracias a ustedes.
~ IX ~
A mi suegra Ichel y su esposo Alfonso, ustedes ya forman parte de mí y mi familia, gracias por aceptarme, no los defraudaré.
Hay muchas personas que se involucran en la vida de uno, algunos quedan, otros simplemente pasan. Gracias a los que pasaron, igual fueron buenos en su momento. Pero, a los que están, mil gracias, esos son mis amigos, los verdaderos, esto también es de ustedes por formar parte de ello. A Taty, Yaimara, Dayana, Yelina, Nela, Aliocha, Maria Elena, Willy, Yoe y a mi primo Raulín, los quiero a todos.
Para todos muchas gracias, cada uno de ustedes representa un granito en este reloj de arena que no ha parado, esto es solo una etapa de mi vida que termina para dar comienzo a otra, ustedes son parte de ella. Para todos unos fragmentos de un poema que me impactó la primera vez que lo leí, creo que de alguna forma representa a cada uno de nosotros, ya que las personas se resumen solo en una palabra, la Vida.
Ya perdoné errores imperdonables,
traté de sustituir personas insustituibles y olvidad personas inolvidables….
…tuve miedo de perder a alguien especial (y terminé perdiéndolo) Pero sobreviví!
Y todavía vivo!
No paso por la vida…
y tu tampoco deberías pasar… Vive!!!
Bueno es ir a la lucha con determinación,
abrazar la vida y vivir con pasión,
~ X ~
perder con clase y vencer con osadía,
porque el mundo pertenece a quien se atreve.
Y…
LA VIDA ES MUCHO Para ser insignificante!
Rocío.
Con todo el amor del mundo dedico esta tesis a:
Mis padres por haberme guiado siempre por el camino correcto de la vida, por educarme sin descanso, por su preocupación constante, sus consejos oportunos, su entrega sin límites y sobre todo, por haberme entregado todo su amor en estos 24 años.
Mi novia Katia por haber estado siempre conmigo en mis últimos años de la carrera, apoyándome y ayudándome en todo momento, por su incansable preocupación y sobre todo, por amarme sin condición y sin descanso.
Mi abuelita Elena, por su gran atención y cuidado incomparable durante toda mi vida.
A mis hermanos por su preocupación y en especial a mi hermano Riguito por estar siempre atento de todas mis necesidades.
Dayán.
~ XI ~
RESUMEN
El presente trabajo surge por la necesidad de crear en los Proyectos Productivos de la Facultad 2 de la Universidad de las Ciencias Informáticas una herramienta que Analice y Gestione los Riesgos en los Sistemas de Información, del cual ya fue realizado un profundo análisis y diseño según lo que plantea la Metodología Magerit 2.0.
Este documento recoge los resultados de todo el trabajo realizado en la implementación del Sistema de Gestión de Riesgos de Seguridad Informática, al hacer un profundo estudio del arte de los aspectos fundamentales referentes a los Sistemas de Gestión de Riesgos en la Información, la valoración del análisis y diseño ya realizado, así como la implementación y prueba del sistema.
Para la realización de este Sistema de Gestión de Riesgos de Seguridad Informática se utilizó el Entorno de Desarrollo Integrado (IDE) de programación Eclipse y para el almacenamiento de datos se propone el Gestor de Base Datos PostgreSQL, conjuntamente con la explotación de un framework de PHP-5, Symfony. El sistema se sometió a Pruebas de Caja Blanca y Caja Negra, exponiéndose los resultados en el presente documento.
PALABRAS CLAVE
Sistema de Gestión de Riesgos, Proyecto, Seguridad Informática, Riesgos de Seguridad Informática.
~ XII ~
ÍNDICE
AGRADECIMIENTOS ... V DEDICATORIA ... VII RESUMEN ... XI
INTRODUCCIÓN ... 1
CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA... 5
1.1 Introducción ... 5
1.2 Metodologías de Gestión y Análisis de Riesgos. ... 5
1.2.1 Metodología Magerit 2.0 ... 5
1.2.2 Herramientas basadas en la Metodología Magerit ... 6
1.3 Conceptos Fundamentales del Sistema de Gestión de Riesgos ... 6
1.4 Aplicación Web ... 10
1.5 Lenguaje de Programación ... 10
1.5.1 Lenguaje JAVA ... 11
1.5.2 Lenguaje PHP 5 ... 12
1.6 Servidor Web ... 13
1.6.1 Apache como Servidor Web ... 13
1.7 Gestor de Base de Datos (GBD) ... 14
1.7.1 PostgreSQL ... 14
1.8 PgAdmin III ... 17
1.9 Herramienta de Desarrollo (IDE) ... 17
1.9.1 Eclipse ... 17
1.10 Framework a utilizar ... 18
1.10.1 Symfony ... 19
1.11 Herramienta Case ... 20
1.11.1 Visual Paradigm ... 20
1.12 Metodología de Desarrollo de Software ... 21
1.12.1 Metodología de Programación Extrema (XP) ... 21
1.12.2 Metodología RUP ... 22
1.13 Lenguaje de Modelado UML ... 26
1.14 Definición y Elementos de Diseño ... 27
1.15 Tratamiento de Errores. ... 27
1.16 Interfaz. ... 28
1.17 Conclusiones Parciales ... 30
CAPÍTULO 2: ANÁLISIS DE LA PROPUESTA ... 31
2.1 Introducción ... 31
2.2 Arquitectura ... 31
2.2.1 Valoración de la arquitectura de la propuesta anterior ... 31
2.3 Patrones de Diseño ... 32
~ XIII ~
2.3.1 Patrones GOF ... 32
2.3.2 Patrones GRASP... 34
2.4 Valoración del Diseño ... 35
2.4.1 Valoración de los Requerimientos Funcionales ... 36
2.4.2 Valoración Casos de Uso del Sistema... 36
2.4.3 Valoración Diagramas de Clases ... 36
2.5 Descripción de las clases ... 39
2.5.1 Clase Activo ... 39
2.5.2 Clase Amenazas ... 39
2.5.3 Clase Salvaguarda ... 40
2.5.4 Clase Usuario ... 40
2.5.5 Clase Rol ... 41
2.5.6 Clase Dominio... 41
2.5.7 Clase Tipo Activo ... 41
2.5.8 Clase Tipo Salvaguarda ... 42
2.5.9 Clase Tipo de Amenaza ... 42
2.5.10 Clase Dimensión ... 42
2.5.11 Clase Dependencia ... 43
2.6 Modelo Implementación ... 43
2.6.1 Diagrama de Componentes ... 43
2.6.2 Diagrama de Despliegue ... 50
2.7 Conclusiones Parciales ... 51
CAPÍTULO 3: PRUEBAS DEL SISTEMA ... 52
3.1 Introducción ... 52
3.2 Diseño de Prueba ... 52
3.3 Pruebas de Funcionalidad ... 52
3.3.1 CUS Adicionar Activo... 53
3.3.2 CUS Identificar Amenazas ... 55
3.3.3 CUS Identificar Salvaguardas ... 56
3.4 Resultados Generales de las Pruebas ... 57
3.5 Pruebas de Camino Básico ... 60
3.6 Conclusiones Parciales ... 62
CONCLUSIONES... 63
RECOMENDACIONES... 64
BIBLIOGRAFÍA ... 65
REFERENCIA ... 70
ANEXOS ... 73
GLOSARIO DE TÉRMINOS ... 99
~ 1 ~ Introducción
A medida que las empresas se fueron desarrollando el hombre se vio en la necesidad de crear una herramienta que le permitiera organizar, registrar y manipular la información en las computadoras, que no son más que sistemas integrados de hardware y software, de ahí que surgen los Sistemas de Información como los encargados de realizar registro de datos y actividades que procesan la información en cierta organización, incluyendo manuales de procesos o procesos automatizados, en fin, no son más que software donde fluye información desde el sistema hasta el usuario que lo manipula y viceversa. Ellos tienen entradas de datos que pueden ser realizadas por el usuario de forma manual o automática y éstos son almacenados en las bases de datos, pudiendo acceder a ellos siempre que se necesiten y no hayan sido eliminados, además se pueden realizar cálculos que se definen a la hora de construir el software.
A medida que los Sistemas de Información fueron extendiéndose por la Red de Redes (Internet e Intranet), comenzaron a existir amenazas que afectaban su funcionamiento y se vio la necesidad de asegurarlos y protegerlos, por lo que aparece la Seguridad Informática como “la encargada de identificar las vulnerabilidades del sistema y el establecimiento de contramedidas que eviten que las amenazas existentes exploten dichas vulnerabilidades [1]”.
La Seguridad Informática (SI) en la actualidad ha tomado valor y se ha ido desarrollando al mismo tiempo que las redes y las telecomunicaciones han ido progresando. Esto no significó que los sistemas informáticos estuvieran totalmente seguros, como bien se dice, “No existe ningún sistema completamente seguro. Existen sistemas más o menos seguros y más o menos vulnerables, pero la seguridad nunca es absoluta [2]”. Como esto no fue suficiente, fue necesario buscar otras formas que integradas a la SI ayudarán a contrarrestar los problemas existentes, razón por la cual se comenzaron a realizar Análisis y Gestionar Riesgos en la Información, la cual ha debutado en diferentes generaciones con excelentes resultados.
1 Rodriguez, Gerlin Vidal. Gestión de la Seguridad Informática.Sistema para la Gestión de Riesgos. La Habana : s.n., 2008.
2 Ídem a la referencia 1.
~ 2 ~
La primera generación en la Gestión y Análisis de Riesgos en la Información fue la Casuística a principio de los 80, donde se identificaban los riesgos pero no se les daba ningún tratamiento, sino que se exportaban hacia otros proyectos. En esta etapa surgen los riesgos tecnológicos donde aparecen los conceptos como fiabilidad, disponibilidad y tasa de fallos. La segunda generación llamada Taxonómica aparece en los años 90, donde ya surgen los primeros modelos de procesos y eventos de gestión de riesgos como son el modelo de Boehm, Modelo de Riesgos del SEI y otros. La tercera generación conocida como Causal es la que ha existido hasta nuestros días, es aquí donde se hace más profundo el Análisis y la Gestión de los Riesgos en los Sistemas de Información y donde surge la Metodología Magerit en todas sus versiones [3].
Las Universidades como cualquier otra organización, deben ser reflexivas de que el futuro ya no es la prolongación del presente, necesitan anticiparse al impacto de las fuerzas que interactúan en su entorno, creando e innovando sus propios instrumentos de gestión e implementando estrategias que les permita asegurar los resultados que se han propuesto alcanzar institucionalmente.
La Universidad de las Ciencias Informáticas (UCI) es una fuente de tecnología que cuenta con gran número de activos informáticos que no son más que los recursos que se tienen disponibles para el desarrollo del trabajo, en su mayoría, en los Proyectos Productivos y estos se ven amenazados constantemente debido a las vulnerabilidades que presentan.
Según entrevistas realizadas a los Líderes de Proyectos Productivos de la Facultad 2, no existe una herramienta que realice el Análisis y Gestión de los Riesgos de Seguridad Informática. Por tal motivo los mismos presentan muchos problemas como la pérdida de datos por inconvenientes de fluido eléctrico o por acceso impropio de personal ajeno a estas áreas.
Otros de los problemas que presentan éstos son la mala climatización y falta de privacidad en las áreas de producción; los hardware desactualizados por sus altos costos, imposibilitan el uso de la última tecnología.
Las instalaciones mal acondicionadas pueden dañar recursos que traerían consecuencias irreparables
3 Di. Uniovi. [En línea] 2007. http://www.di.uniovi.es/~aquilino/Asignaturas/ProyectosInformatica/Documentos/07-GestionRiesgos.pdf.
~ 3 ~
para los proyectos productivos ya que ocasionarían perdidas de datos y se verían en la obligación de comenzar a realizar nuevamente los trabajos.
Al mismo tiempo, existen restricciones en cuanto a algunos servicios de la red, lo que imposibilita que las personas estén bien informadas de las últimas novedades que puedan surgir, así como la adquisición de licencias de algún software propietario, lo cual dificulta el uso de ciertas herramientas necesarias para el desarrollo de una aplicación. Además la mayoría de los proyectos productivos en la UCI están integrados por estudiantes, los cuales en la generalidad de las veces no pueden cumplir con las tareas asignadas debido a la carga de trabajo y la mala coordinación entre las partes docentes y productivas.
Todas estas amenazas antes mencionadas ya son problemas de los proyectos, porque existen desde que se crean hasta su fase final, lo que provoca que se atrasen en su entrega y no cumplan con la planificación trazada al comienzo de estos.
A pesar de que en algunos proyectos se hacen análisis para mitigar esos riesgos, estos son superficiales ya que no cuentan con una herramienta que gestione y analice las amenazas existentes y se trace un plan de medidas de seguridad contra estas. En la Facultad 2 se definió una herramienta para solucionar estos problemas existentes, basándose en una investigación profunda realizada a los sistemas y metodologías que existen de Análisis y Gestión de Riesgos de la Información; donde se optó por la utilización de Magerit 2.0 que se maneja para Gestionar y Analizar los Riesgos de la Información.
Basándose en dicha Metodología fue creado todo el diseño de la herramienta Sistema de Gestión de Riesgos de Seguridad Informática definida, la cual no se pudo implementar, por lo que se puede definir como problema a resolver: La inexistencia del software diseñado para automatizar los procesos de Gestión de Riesgos de Seguridad Informática de los Proyectos Productivos de la Facultad 2, como objeto de estudio: las herramientas de Análisis y Gestión de Riesgos en los Sistemas de Información, el cual enmarca el siguiente campo de acción: La herramienta de Análisis y Gestión de Riesgos de la Metodología Magerit 2.0. Para dar cumplimiento a lo planteado anteriormente el objetivo general será:
Implementar la herramienta Sistema de Gestión de Riesgos de Seguridad Informática definida para realizar un correcto Análisis y Gestión de Riesgos de Seguridad Informática de los Proyectos Productivos en la Facultad 2. Para dar cumplimiento al objetivo, se deben realizar las siguientes tareas:
1. Realizar un análisis crítico de la propuesta realizada.
~ 4 ~
2. Consultar y profundizar en la Metodología MAGERIT 2.0.
3. Realizar un análisis crítico a las herramientas propuestas para la implementación del software.
4. Implementar y realizar las Pruebas de Caja Blanca y Caja Negra a la herramienta Sistema de Gestión de Riesgos de Seguridad Informática para el análisis y gestión de riesgos.
Para solucionar el problema expuesto y dar cumplimiento al objetivo planteado, es necesario entender en profundidad la Metodología de Análisis y Gestión de Riesgos en los Sistemas de Información Magerit 2.0, así como entender la propuesta de análisis y diseño realizada que define la herramienta a implementar para la Gestión de Riesgos de Seguridad Informática las cuales al finalizar este trabajo serán las funcionalidades con que contará el Sistema de Gestión de Riesgos de Seguridad Informática. La principal fuente de esta información está recogida en el Trabajo de Diploma para optar por el título de Ingeniero en Ciencias Informáticas presentado por Gerlín Vidal Rodríguez. El actual trabajo es la continuidad del antes citado y está caracterizado por la terminación del mismo. El producto final de esta investigación será un Sistema de Gestión de Riesgos de Seguridad Informática que será utilizado por los Proyectos Productivos de la Facultad 2 permitiendo así solucionar los problemas existentes trazando un plan adecuado de seguridad y si se logran buenos resultados poder llevarlo a todos los proyectos de la universidad.
El presente trabajo consta de tres capítulos:
Capítulo 1 Fundamentación Teórica: En este capítulo se definirá el estado del arte de las herramientas que se utilizaran para el desarrollo del Sistema de Gestión de Riesgos de Seguridad Informática, así como los conceptos que debe conocer el usuario que trabajará con la aplicación.
Capítulo 2 Descripción y Análisis de la Solución Propuesta: Dado que este trabajo es continuación del realizado análisis y diseño al Sistema de Gestión de Riesgos de Seguridad Informática, se da la tarea en este capítulo de valorar lo antes modelado y describir todas las clases con que cuenta el sistema ya implementado. Se muestran además, los diagramas de componentes que conforman el Modelo de Implementación.
Capítulo 3 Pruebas del Sistema: En este capítulo se le realizan al sistema las Pruebas de Caja Blanca, específicamente las de Camino Básico en la parte del código y las Pruebas de Funcionalidad en las de Caja Negra, que permite que se entregue un sistema fuerte, seguro y bien implementado.
~ 5 ~ CAPÍTULO 1: FUNDAMENTACIÓN TEÓRICA
1.1 Introducción
Para poder solucionar los problemas que existen en los Proyectos Productivos de la Facultad 2 se implementará un Sistema de Gestión de Riesgos de Seguridad Informática. Para esto fue necesario definir las herramientas con que se llevará a cabo la implementación, la metodología con la que se definió el sistema y los conceptos fundamentales que deben conocer para manejar las funcionalidades del Sistema de Gestión de Riesgos de Seguridad Informática.
1.2 Metodologías de Gestión y Análisis de Riesgos.
La metodología por sí sola no es más que “el enlace entre el sujeto y el objeto de conocimiento. Sin ella es prácticamente imposible lograr el camino que conduce al conocimiento científico [4]”. Las metodologías son el estudio de los métodos que se siguen para alcanzar los objetivos propuestos.
Existen muchas metodologías para el Análisis de Riesgos en la Información, entre las más usadas se encuentran EBIOS (Expresión de las Necesidades e Identificación de los Objetivos de Seguridad), OSSTMM (Manual de Metodología Abierta de Testeo de Seguridad), OWASP (Open Web Application Security Project) y MAGERIT (Metodología de Análisis y Gestión de Riesgos en los Sistemas de Información). Sobre esta última está basada la propuesta del Sistema de Gestión de Riesgos de Seguridad Informática a implementar ya que fue por la que se realizó todo el levantamiento de requisitos del mismo.
1.2.1 Metodología Magerit 2.0
La Metodología Magerit 2.0 fue la utilizada por el trabajo realizado de análisis y diseño del Sistema de Gestión de Riesgos de Seguridad Informática. Esta metodología está basada en la norma ISO 27002: 2005 la misma que Cuba traduce para conformar su propia Norma de Seguridad Informática.
Esta metodología es de carácter público y proporciona un gran número de herramientas para obtener un mapa de todos los riesgos que se desean controlar y representar, lo que facilita la toma de decisiones.
4 P, Boris Yopo. Crefal. Crefal. [En línea] 2006.
http://www.crefal.edu.mx/biblioteca_digital/CEDEAL/acervo_digital/coleccion_crefal/cuadernos/cua16/cap3.pdf.
~ 6 ~
Magerit proporciona una buena organización en los informes de conclusión del Análisis y Gestión de los Riesgos en los proyectos, como son: modelo de valor, mapa de riesgos, evaluación de salvaguardas, estado de riesgo, informe de insuficiencias, y plan de seguridad [5]. Otro de los motivos por el cual esta fue la metodología seleccionada son sus objetivos, que se adaptan a lo que requiere la UCI para controlar los Riesgos de Seguridad Informática, estos son:
1. Concienciar a los responsables de los sistemas de información de la existencia de riesgos y de la necesidad de controlarlos a tiempo.
2. Ofrecer un método sistemático para analizar tales riesgos.
3. Ayudar a descubrir y planificar las medidas oportunas para mantener los riesgos bajo control.
4. Apoyar la preparación de la Organización para procesos de evaluación, auditoría, certificación o acreditación, según corresponda en cada caso.
1.2.2 Herramientas basadas en la Metodología Magerit
La herramienta Pilar está diseñada bajo la Metodología Magerit, esta herramienta requiere de una licencia para poder utilizarla ya que es de uso exclusivo de la Administración Pública de Madrid. Además, no es una herramienta portable y no está diseñada para poder acceder a ella a través de la Red. Estos
inconvenientes impiden la utilización de Pilar, además, no permite el trabajo con ella si no está instalada en la máquina, pues es una herramienta de tipo Desktop o Escritorio.
1.3 Conceptos Fundamentales del Sistema de Gestión de Riesgos
El Sistema de Gestión de Riesgos de Seguridad Informática a implementar contará con funcionalidades que permitirán al final de cada análisis trazar un Plan de Seguridad para contrarrestar los riesgos que puedan existir en los Proyectos Productivos. Para poder lograr lo antes mencionado el usuario que haga uso del software debe conocer los conceptos importantes del sistema. Dichos conceptos son los que presenta Magerit 2.0 para trabajar con los Riesgos de Seguridad Informática, que son los mismos conceptos que maneja Cuba en relación a esta.
5 PÚBLICAS, MINISTERIO DE ADMINISTRACIONES. CSI.MAP. [En línea] 20 de Junio de 2006. http://www.csi.map.es/csi/pdf/magerit v2/metodo v11 final.pdf.
~ 7 ~
Activos: Recursos del sistema de información o relacionados con este, necesarios para que el proyecto funcione correctamente y alcance los objetivos propuestos. Estos se pueden desglosar en tipos como:
La información: Es el más importante, son los datos del sistema.
Los servicios: Son las funcionalidades que presta el sistema dado los datos o información.
El software: Son las aplicaciones que permite el manejo de la información.
El hardware: Equipos informáticos donde se encuentra el software instalado.
Soportes de información: Dispositivos de almacenamiento de datos.
Equipamiento auxiliar: Todos los demás activos que complementan el material informático.
Redes de comunicaciones: Permiten el intercambio de datos.
Las instalaciones: Compuesta por los equipos informáticos y de comunicaciones Las personas: Son las que operan con todos los anteriores.
Amenazas: Lo que le puede ocurrir a los activos, los cuales pueden ocasionar daños leves o graves según su intensidad. Estas amenazas pueden ser ocasionadas por:
Desastres naturales: Sucesos que pueden ocurrir sin la intervención de los seres humanos como causa indirecta ó directa, es decir, que pueden ser afectados directamente los activos o afectar cualquier otra entidad que tenga que ver con ellos, ejemplo, el local donde estos se encuentren ubicados. Pueden ocasionarse por fuego, inundación, terremotos, huracanes, etc.
De origen industrial: Pueden ocurrir de forma accidental, derivadas de la actividad humana y pueden ser intencionales o deliberadas. Estas se clasifican de tipo fuego, daños por agua, desastres industriales, contaminación mecánica o electromagnética, averías, cortes eléctricos, condiciones de temperatura y/o humedad, fallos de servicios de comunicación, interrupción en los mismos, degradación de los soportes de almacenamiento de la información, emanaciones electromagnéticas.
Errores y fallos no intencionados: Fallos no intencionados causados por las personas. Se pueden encontrar errores de las personas al utilizar los servicios, errores de administración, errores de configuración, deficiencias en la organización, difusión de software dañinos, errores de re- encaminamiento, de secuencia, escape de información, alteración de esta, introducir información incorrecta, degradación, destrucción y divulgación de la información. Otros fallos que pueden existir no intencionales son las vulnerabilidades que tiene el software, errores en su mantenimiento, caída del sistema por agotamiento de recursos y personal indispuesto.
~ 8 ~
Ataques Intencionados: Ataques que ocurren por la acción del hombre y que saben que serán cometidos. Estas amenazas son las más comunes, las cuales se reflejan con las manipulaciones de la información, suplantación de la identidad del usuario, abuso en los privilegios de acceso, uso no previsto, difusión de software dañino, re-encaminamiento de mensajes. Alteración de secuencia, acceso no autorizado, análisis de tráfico, repudio, intersección, modificación y corrupción de información, manipulación de programas, extorsión, ataques destructivos, ingeniería social, personal indispuesto.
Riesgos: Estimación del grado de exposición a que una amenaza se materialice sobre uno o más activos causando daños o perjuicios al proyecto.
Salvaguardas: Son las que permiten hacer frente a las amenazas y evitar que estas exploten las vulnerabilidades del sistema. Cada activo tiene sus propias salvaguardas, pero en general estos deben contener:
Organización de la seguridad.
Política corporativa de seguridad de la información.
Gestión de privilegios: adjudicación, revisión y terminación.
Procedimientos de escalado y gestión de incidencias
Procedimientos de continuidad de operaciones: emergencia y recuperación.
Auditoria, registro (certificación) y acreditación del sistema.
Cualquier usuario no es él que interactúa con el sistema, sino, los que tengan la preparación y el rol adecuado para trabajar con este. Los cuales serían:
Directivo de Seguridad: Es el rol responsable de dar soporte, administrar y dar control al sistema, en la parte de Seguridad Informática de la organización en la que se encuentre.
Responsable de Seguridad: Es el rol responsable de introducir y gestionar en el sistema los datos de los activos que corresponden a su dominio de seguridad en la organización que se encuentre.
~ 9 ~
El sistema será encargado de estimar, evaluar y hacer cálculos que den el resultado adecuado para implantar un plan de seguridad contra las amenazas que afectan a los activos con que cuenta la organización.
Estimación del Impacto: Es el objeto que representa la medida del daño sobre el activo derivado de la materialización de una amenaza, sin tener en cuenta las salvaguardas actualmente desplegadas.
Impacto Acumulado: Es el objeto que se calcula para cada activo, por cada amenaza y en cada dimensión de valoración, siendo una función del valor acumulado y de la degradación causada.
Impacto Repercutido: Es el objeto que se calcula para cada activo, por cada amenaza y en cada dimensión de valoración, siendo una función del valor propio y de la degradación causada.
Estimación del Riesgo: Este objeto es la medida del daño probable sobre un sistema. Conociendo el impacto de las amenazas sobre los activos, se puede derivar el riesgo sólo teniendo en cuenta la frecuencia de ocurrencia, pero no las salvaguardas actualmente desplegadas.
Riesgo Acumulado: Es el objeto que se calcula para cada activo, por cada amenaza y en cada dimensión de valoración, siendo una función del valor acumulado, la degradación causada y la frecuencia de la amenaza.
Riesgo Repercutido: Es el objeto que se calcula para cada activo, por cada amenaza y en cada dimensión de valoración, siendo una función del valor propio, la degradación causada y la frecuencia de la amenaza.
Resultados: Este objeto permite interpretar los resultados anteriores de impacto y riesgo, así como establecer relaciones de prioridad por activos o grupos de activos, bien por orden de impacto o por orden de riesgo.
Para poder llevar a cabo la implementación del Sistema de Gestión de Riesgos de Seguridad Informática es necesario primeramente definir como se realizará, si como Aplicación Web o Desktop. Luego de
~ 10 ~
realizado un estudio en el trabajo anterior se optó por la primera variante, debido a todas las ventajas que esta tiene.
1.4 Aplicación Web
En este trabajo se decidió crear el Sistema de Gestión de Riesgos de Seguridad Informática en forma de aplicación web por todas las ventajas que esta presenta. Las aplicaciones web son las que permiten que los usuarios puedan acceder a un servicio web a través de Internet o de una Intranet mediante una computadora. Estas han venido sustituyendo las aplicaciones de escritorio, ya que son fáciles de mantener y para hacerles actualizaciones no es necesario ir reinstalando un software en cada ordenador donde se encuentre. Pensando ya en el funcionamiento del sistema que se va a implementar, se obtienes las siguientes ventajas:
Multiplataforma: Se puede emigrar a cualquier sistema operativo sin necesidad de afectarse su funcionamiento.
Fácil uso: Para su uso solo se requiere de una computadora con un navegador web.
Datos Online: Se puede trabajar a distancia desde cualquier computadora.
Múltiples usuarios concurrentes: Pueden ser utilizadas por múltiples usuarios al mismo tiempo [6].
Para desarrollar aplicaciones web es necesario seleccionar el lenguaje de programación con que será programada la aplicación, por lo que se realizó un estudio para seleccionar dicho lenguaje.
1.5 Lenguaje de Programación
Los Lenguajes de Programación son herramientas que nos permiten crear programas y software. Los programas no son otra cosa que una colección de funciones que son llamadas sucesivamente por la función principal y única del programa; cada función tiene sus propias variables, es un módulo independiente. La Programación Orientada a Objetos es el próximo paso en la evolución de estos lenguajes, ya que hace combinaciones de funciones y datos en una unidad auto consistente llamada clases, además de incorporar la herencia que nos permite organizar las clases jerárquicamente.
6 Solutions, Solcre Technology. Solcre. [En línea] 2007. http://www.solcre.com/files/ventajas_de_las_aplicaciones_web.pdf.
~ 11 ~
En este trabajo se realiza una comparación entre los lenguajes de programación Java y PHP. Cada uno de estos lenguajes tienen sus propias características, por lo que no se puede decir que uno sea mejor que otro, sino, que se puede ver como una comparativa de cuando es mejor usar uno y no el otro, según lo que se desee hacer.
1.5.1 Lenguaje JAVA
JAVA fue creado con el propósito de fusionar un lenguaje compatible para toda la red computacional heterogénea e independiente de la plataforma donde fuese ejecutado. Es un lenguaje de programación orientada a objeto que tiene funciones similares al lenguaje C y C++. Con este lenguaje se logró la distribución del trabajo ya que permite el desarrollo de aplicaciones bajo el esquema Cliente-Servidor [7].
Pero como todo lenguaje, tiene sus desventajas que no lo convierten en el que se quiere utilizar para la implementación del Sistema de Gestión de Riesgos de Seguridad Informática, podemos destacar algunas como lentitud en término de ejecución, seguridad y difícil de aprender:
Lentitud: puede ser lento en términos de ejecución. Java esta creado para manejar la memoria usada y no utilizada. Esto puede crear una situación en la que el programa corra más lento de lo que se supone por usar más memoria de la debida. Es decir, el programa ejecuta varias veces la sección de código no resuelta, por tanto hay un desperdicio de memoria.
Seguridad: como en todo lenguaje de programación Java puede ser víctima de algún virus.
La seguridad es una desventaja que no tan solo tiene Java sino cualquier lenguaje de programación o código ejecutable.
Difícil de aprender: no se debe enseñar Java como primer lenguaje de programación, si no se tiene experiencia programando. Adquirir un estilo de programación orientada a objeto es difícil, además de conocer su filosofía y los componentes en las clases de librerías lo cual es difícil y consume mucho tiempo.
Es un lenguaje aconsejable para su utilización, pero en este sistema no es necesario ya que se
7 Miguel Ángel Manzanedo del Campo, Francisco José García Peñalvo. Pisuerga . [En línea] Octubre de 1999.
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/Index.htm .
~ 12 ~
implementará una web pequeña, en un corto período y JAVA requiere de tiempo para su aprendizaje debido a su complejidad. Por tales motivos se decidió utilizar PHP como lenguaje de programación para el Sistema de Gestión de Riesgos de Seguridad Informática.
1.5.2 Lenguaje PHP 5
Se hará uso en este trabajo del lenguaje de programación PHP 5 porque es un lenguaje del lado del servidor y compatible con casi todos los servidores, gratuito e independiente de plataforma. Fue creado desde cero únicamente para el diseño web, lo que facilita que la implementación sea más fácil, rápida y efectiva. Además PHP 5 es un lenguaje fácil de aprender, sin necesidad de tener conocimientos en otros lenguajes, lo que hace que el trabajo sea más fácil para los novatos y también cuenta con una gran documentación. El hecho de que esté montado sobre un servidor libre hace que sea más rápido y seguro, además permite la configuración del servidor según los usos que necesite el usuario [8].
Las capacidades más importantes de PHP 5 que lleva a optar por su uso son la compatibilidad con una de las bases de datos más comunes como PostgreSQL y la perfecta integración con el servidor Apache. Sus características constituyen las ventajas por la que se decidió optar por su utilización en la implementación del Sistema de Gestión de Riesgos de Seguridad Informática; sistema que dado su objetivo debe ser fácil de manipular y entendible para el usuario. Estos objetivos son:
o Muy Rápido.
o Lenguaje fácil y potente. Empezar a programar es realmente sencillo.
o Se integra perfectamente con PostgreSQL.
o Diseño Modular de fácil ampliación.
o Licencia Abierta.
o Es potente y proporciona funciones de alto nivel con poco código.
8 Manual de PHP. [En línea] 2008. http://mx.php.net/manual/en/history.php#83398 .
~ 13 ~
1.6 Servidor Web
Existen muchos tipos de servidores web, pero todos realizan la misma función, que no es más, que proporcionar el acceso a los servicios que se encuentran en la base de datos. Un servidor web es un tipo de software que realiza ciertas tareas en nombre de los usuarios. Otra nueva definición es que es un ordenador físico en el cual funciona ese software, una máquina cuyo propósito es proveer datos de modo que otras máquinas puedan utilizar esos datos [9].
Los servidores Web implementan el protocolo HTTP (Hypertext Transfer Protocol) que está diseñado para transferir hipertextos y páginas HML (Hipertexto Markup Language). Los navegadores o clientes realizan peticiones HTTP al servidor web y este le responde con el contenido que fue solicitado. Entre los servidores más utilizados encontramos el servidor Web Apache, que cuenta con gran popularidad a pesar de su compleja instalación.
1.6.1 Apache como Servidor Web
Apache es un servidor encargado de gestionar las peticiones de los usuarios que visitan su página web. Es el programa encargado de mostrar sus páginas cuando un visitante realiza una petición en su dominio.
Apache presenta buena configuración, robustez y estabilidad, además de ser código abierto, que permite modificar o incrementar las funciones según las necesidades. Estas son las características más importantes que hacen de Apache el servidor a utilizar en la implementación del Sistema de Gestión de Riesgos de Seguridad Informática:
Corre en una multitud de Sistemas Operativos, lo que lo hace prácticamente universal.
Es una tecnología gratuita de código fuente abierto. El hecho de ser gratuito es importante pero no tanto como que se trate de código fuente abierto. Esto le da una transparencia a este software de manera que si queremos ver que es lo que estamos instalando como servidor, lo podemos saber, sin ningún secreto, sin ninguna puerta trasera.
Un servidor altamente configurable de diseño modular. Es muy sencillo ampliar sus capacidades. Actualmente existen muchos módulos que son adaptables a este.
9 Anónimo. Mas Adelante.com. [En línea] 2007. http://www.masadelante.com/faq-servidor.htm .
~ 14 ~
Trabaja con PHP [10].
Apache tiene ventajas que no presenta otros servidores, como son su fiabilidad y extensibilidad. La fiabilidad tiene un 90% de alta disponibilidad funcional y gran extensibilidad ya que se le pueden añadir módulos que lo hacen aun más extenso.
Apache se integra perfectamente con el Gestor de Base de Datos PostgreSQL, el cual presenta unas características colosales para ser el escogido en el desarrollo del Sistema de Gestión de Riesgos de Seguridad Informática.
1.7 Gestor de Base de Datos (GBD)
Un gestor de base de datos es un software que sirve de interface entre la Base de Datos, el usuario y las aplicaciones que lo utilizan. Los objetivos más importantes que debe cumplir un GBD son lograr la independencia de los datos, integridad en los datos y seguridad.
independencia de los datos: las aplicaciones no deben verse afectadas por cambios en la estructura de los datos.
integridad de los datos: los datos deben cumplir ciertas restricciones que aseguren la correcta introducción, modificación y borrado de los mismos.
Seguridad: establecer diferentes niveles de acceso a los datos a diferentes tipos de usuarios [11].
Entre los gestores de bases de datos más utilizados se encuentran PostgreSQL y MySQL. En el trabajo anterior se opta por PostgreSQL, en el presente se realizó una valoración profunda del seleccionado y fue reiterado.
1.7.1 PostgreSQL
PostgreSQL es un Gestor de Base de Dato (GBD) orientado a objeto desarrollado por el Grupo Global de Desarrollo de PostgreSQL (PostgreSQL Global Development Group, PGDG). Se encuentra entre los gestores más utilizados, integridad en sus datos y seguro, es multiplataforma, creado bajo código abierto,
10 Ciberaula Linux. [En línea] 2007. http://linux.ciberaula.com/articulo/linux_apache_intro/.
11 Carlos, Juan. Tema IV: Sistemas de gestión de bases de datos. s.l. : Escuela Univeristaria de Informática, 2001.
~ 15 ~
además está distribuido bajo la licencia BSD (Berkeley Software Distribution), la cual permite su uso y distribución de forma gratuita. Es un GBD factible para aplicaciones que gestionan un gran número de usuarios, sin tener el miedo de que se pueda bloquear [12].
PostgreSQL en su última versión 8.0 incorpora características que hacen de él un GBD deseado por todos, entre ellas se incluyen:
Soporte nativo a Windows: PostgreSQL se ejecuta en forma nativa en los Sistemas Operativos Windows, sin requerir de una capa de emulación. Esto proporciona una mejora dramática del desempeño con respecto a versiones previas y ofrece a los proveedores de software, usuarios corporativos y desarrolladores en Windows una alternativa convincente frente a otro software de Bases de Datos propietarios.
Puntos de Salvaguarda: Esta característica del estándar SQL permite que partes específicas de una transacción sobre la base de datos sean objeto de un roll back sin necesidad de abortar toda la operación. Esto beneficia a los desarrolladores de aplicaciones de negocios que requieren transacciones complejas con recuperación de errores.
Recuperación Puntual: Esta característica permite ejecutar una restauración completa de los datos desde los archivos de registro de transacciones que se actualizan de manera automática y continua. Esta característica provee una alternativa largamente esperada a los respaldos horarios o diarios en servicios críticos de datos con PostgreSQL.
Espacios de Tablas: Ésta es una característica crucial para los administradores de grandes sistemas de almacén de datos; los espacios de tablas permiten la ubicación de grandes tablas e índices en sus propios discos individuales o en arreglos de discos, mejorando de esta forma el desempeño de las consultas.
Mejoras en el Manejo de la Memoria y E/S: El uso de discos y memoria ha sido optimizado mediante el uso del algoritmo de «Reemplazo Adaptativo de Cache» (ARC), el nuevo escritor en segundo plano y la nueva característica de retardo de la recolección de basura. Esto
12 PostgreSQL, Equipo Desarrollo de. Tutorial de PostgreSQL. [En línea] http://es.tldp.org/Postgresql- es/web/navegable/tutorial/tutorial.html.
~ 16 ~
producirá cargas más predecibles y un desempeño sustancialmente más consistente durante los períodos de uso intensivo.
Funciones: Las funciones en PostgreSQL soportan «demarcado de dólar», que permite evitar las molestas comillas anidadas. Además, como beneficio de los nuevos Puntos de Salvaguarda, las funciones PL/pgSQL tienen una limitada capacidad de manejar excepciones usando la cláusula EXCEPTION.
Diseño de Bases de Datos: Los administradores de bases de datos pueden cambiar los tipos de datos de las columnas directamente en las tablas usando ALTER TABLE.
Se soporta la declaración de columnas con tipos de datos compuestos, en conformidad con el estándar SQL. Todos los objetos de las bases de datos soportan CHANGE OWNER.
Importación y Exportación de Datos: El comando COPY ahora soporta el común formato separado por comas (CSV), haciendo más sencillas las transferencias de datos desde y hacia otro software.
Mejoras al optimizador: El optimizador de consultas hará uso de los índices para tipos de datos compatibles, reduciendo significativamente la necesidad de aplicar conversiones explícitas de valores constantes. Esta versión incluye además empleo optimizado de los índices, mejor optimización de cláusulas OR, muestreo mejorado en ANALYZE, TRUNCATE más rápido, y mejor generación de sentencias preparadas, además de mejoras menores demasiado numerosas para ser mencionadas aquí.
Registro: Los administradores pueden habilitar rotación automática de los archivos de registro a través del archivo postgresql.conf. Además, el registro es mucho más configurable que antes, incluyendo la posibilidad de agregar a cada línea prefijos definidos por el administrador, el registro de tipos específicos de sentencias SQL, y la posibilidad de registrar las desconexiones.
Respaldos: Los respaldos son las copias de seguridad que se realizan en la BD según como se quiera por días, año, etc., estos se actualizan luego pasado el tiempo seleccionado. La utilidad portable de respaldos, pg_dump, ha sido reescrita extensivamente. Esta versión añade algunas capacidades nuevas, como la inclusión de las horas de inicio y término, a la vez que se han eliminado los problemas restantes de privilegios y dependencias entre los objetos respaldados.
~ 17 ~
1.8 PgAdmin III
Como aplicación gráfica para gestionar el GBD PostgreSQL se utilizó el pgAdmin III. Herramienta más popular de código abierto de administración y plataforma de desarrollo de PostgreSQL, la más avanzada base de datos Open Source en el mundo [13].
PgAdmin III está diseñado para responder a las necesidades de todos los usuarios, desde escribir consultas SQL simples hasta desarrollar bases de datos complejas. Él soporta todas las características de PostgreSQL y facilita enormemente la administración. La aplicación también incluye un editor SQL con resaltado de sintaxis, un editor de código de la parte del servidor, un agente para lanzar scripts programados, soporte para el motor de replicación Slony-I y mucho más. La conexión al servidor puede hacerse mediante conexión TCP/IP o Unix Domain Sockets (en plataformas Unix), y puede encriptarse mediante SSL para mayor seguridad [14].
1.9 Herramienta de Desarrollo (IDE)
Las Herramientas de Desarrollo de Software (Entorno de Desarrollo Integrado, IDE) permiten que los programadores implementen de una forma concreta y organizada. Estas incluyen técnicas de soporte para detectar y mostrar errores en la programación y facilitan el completamiento de código, todo esto agiliza el desarrollo del software. Algunas traen ejemplos de códigos y documentación para lograr un mejor entendimiento en los programadores. Entre las herramientas que existen se escogió para el desarrollo de este trabajo Eclipse con el plug-in15 de PHP para el desarrollo de la programación.
1.9.1 Eclipse
El IDE Eclipse está construido por la comunidad abierta de desarrollo de software, es de código abierto y licencia gratuita. Fue desarrollado para el lenguaje JAVA y como ha tenido gran éxito en la sociedad se está abriendo campos en otros lenguajes como PHP a través del plug-in de PHP que cuenta con un buen
13 PgAdmin PostgreSQL Tools. Introduction pgAdmin III, 2008. Disponible en: http://www.pgadmin.org/
14 Ídem a la referencia 13.
15 Es un parche para un determinado programa, que le añade funciones nuevas a las que este ya disponía.
~ 18 ~
número de funcionalidades que hacen el trabajo más fácil [16]. Es una buena alternativa para el desarrollo web, además su desarrollo en PHP posibilita visualizar la barra de errores que se produzcan en el código escrito y dispone de un manual de PHP integrado. Soporta cualquier tipo de sistema operativo entre los más usados, como Linux y Windows. Entre sus características están presentes:
Compilación incremental de código.
Depura código que resida en una máquina remota.
Modifica he inspecciona valores de variables [17].
Todas las herramientas antes mencionadas para desarrollar el Sistema de Gestión de Riesgos de Seguridad Informática se integran perfectamente unas con otras. Pero para crear un software con superior calidad, nada mejor que la utilización de un Framework, que permite organizar el sistema de una manera espléndida y facilita el entendimiento de los que no lo conocen.
1.10 Framework a utilizar
Un framework no es más que la forma de organizar un proyecto, lo que hace que el trabajo del programador sea más fácil. Los framework existen por la necesidad que surgió entre los programadores de organizar sus trabajos para hacerlos más fáciles y entendibles [18]. Uno mismo puede crear su framework siempre y cuando se le de una estructura lógica a su sistema y mantenga agrupadas y organizadas sus funciones.
Existen varios framework según el lenguaje que se desee utilizar, entre los que se encuentran “Ruby on Rails” en el lenguaje Ruby, JavaServer en Java, y el notorio Symfony en PHP, por todas las características que este tiene hacen más fácil y comprensible su utilización [19].
Con el uso de un framework no es necesario que el programador se plantee una estructura global de la
16 Jesús M. González Barahona, Joaquín Seoane Pascual, Gregorio Robles. Atenas.Cult. Introducción al Software Libre. [En línea] 2003-2007 . http://www.atenas.cult.cu/rl/informatica/manuales/sl/introduccion_al_SL/eclipse.html
17 Laura Bermejo Sanz, Enrique González Monreal. Kybele. Eclipse como IDE. [En línea]
http:/kybele.escet.urjc.es/documentos/HC/Exposiciones/EclipseIDE.pdf.
18Gutiérrez, Javier J. css blog. [En línea] http://www.cssblog.es/guias/Framework.pdf.
19 Ídem a la referencia 18.
~ 19 ~
aplicación, solo tiene que rellenar el esqueleto que este propicia; puede cambiarse el código fuente que utilices sin que se creen problemas a la hora de la adaptación, lo que ahorrará tiempo y trabajo; además una de las ventajas más importantes que tienen es la amplia documentación y librerías con que cuentan.
1.10.1 Symfony
Symfony es un framework programado en PHP 5, enfocado al desarrollo de aplicaciones web. Fue creado en Octubre del 2005 por Fabien Potencier [20]. Es compatible con la mayoría de los gestores de base de datos que existen, entre los que se encuentra PostgreSQL. Es un framework multiplataforma, lo que posibilita que se pueda ejecutar en cualquier Sistema Operativo como Windows y Linux en todas sus versiones y se organiza según el patrón de arquitectura Modelo Vista Controlador (MVC). Además es uno de los framework más usados en la UCI. Symfony se va desarrollando a diario y cuenta con una gran documentación y amplia biblioteca de clases, lo que permite que sea más fácil de aprender. Su arquitectura, componentes y herramientas, permiten que se creen aplicaciones complejas en poco tiempo.
Symfony se diseñó para que se ajustara a las siguientes características:
1. Fácil de instalar y configurar en la mayoría de las plataformas (y con la garantía de que funciona correctamente en los sistemas Windows y Unix estándares).
2. Independiente del sistema gestor de bases de datos.
3. Sencillo de usar en la mayoría de los casos, pero lo suficientemente flexible como para adaptarse a los casos más complejos.
4. Basado en la premisa de “convenir en vez de configurar”, en la que el desarrollador solo debe configurar aquello que no es convencional.
5. Sigue la mayoría de mejores prácticas y patrones de diseño para la web.
6. Preparado para aplicaciones empresariales y adaptables a las políticas y arquitecturas propias de cada empresa, además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo.
7. Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo.
20 Potencier, Fabien y Zaninotto, François. 2007. Symfony la guía definitiva. Symfony la guía definitiva. [En línea] 2007.
http://www.librosweb.es/symfony/.
~ 20 ~
8. Fácil de extender, lo que permite su integración con librerías desarrolladas por terceros [21].
Para lograr una mejor implementación y lograr que el usuario entienda lo que se ha hecho es necesario modelar; en el anterior trabajo se utilizó la herramienta Case Visual Paradigm, en este se empleará la misma para modelar la implementación y así se mantiene una uniformidad en ambos trabajos.
1.11 Herramienta Case
Las Herramientas de Ingeniería de Software Asistida por Computación (Computer Aided Software Engineering, CASE) permiten organizar y manejar la información de un proyecto informático.
Permitiéndole que la creación de los sistemas (especialmente los complejos), se tornen más flexibles, comprensibles y además mejoran la comunicación entre las personas del proyecto y los clientes [22]. La herramienta CASE seleccionada para la modelación de este trabajo es Visual Paradigm, ya que fue la utilizada en la modelación del negocio del trabajo al cual este le da continuación.
1.11.1 Visual Paradigm
Como herramienta CASE se utilizó Visual Paradigm, que sustenta el lenguaje de modelado UML con una amplia documentación y todos sus diagramas de diseño; soporta el ciclo de vida completo del desarrollo de software. Además de ser la herramienta aplicada por el movimiento de software libre.
Es considerada la herramienta Case de preferencia para el desarrollo de este trabajo pues se integra con muchas bases de datos entre las que se encuentra PostgreSQL, lenguajes de programación como PHP y varios IDEs, entre ellos Eclipse. Entre las ventajas de esta herramienta se encuentra que es portable y muy rápida en su tiempo de ejecución, no es gratuita pero la UCI cuenta con una licencia para su uso.
Visual Paradigm también proporciona características tales como generación de código, ingeniería inversa y generación de informes. Tiene la capacidad de crear el esquema de clases a partir de una base de datos, y crear la definición de base de datos a partir del esquema de clases. Permite invertir código fuente
21 Ídem a la referencia 20
22 Anónimo. Cyta.Com. [En línea] 2007. http://www.cyta.com.ar/biblioteca/bddoc/bdlibros/proyectoinformatico/libro/c5/c5.htm.
~ 21 ~
de programas, archivos ejecutables y binarios en modelos UML al instante, creando de manera simple toda la documentación [23].
Existen muchas metodologías para el desarrollo de software, luego de un estudio se decidió optar por RUP ya que se integra perfectamente con la herramienta CASE y el lenguaje de modelado UML.
1.12 Metodología de Desarrollo de Software
Las Metodologías de Desarrollo de Software no son más que procedimientos o técnicas que te ayudan a documentar el proceso de desarrollo del software. No existe metodología mejor que otra, cada una tiene sus propias características y se enfocan en funciones específicas. Las metodologías se clasifican en ágiles y tradicionales. Las ágiles son aquellas donde el desarrollo de software se caracteriza por ser incremental, cooperativo, sencillo y adaptable, entre ellas se encuentran XP y SCRUM.
Las tradicionales son metodologías que se centran fundamentalmente en el control del proceso, además son las más efectivas para proyectos de gran tamaño. Las metodologías tradicionales más populares son OPEN, METRICA 3 y RUP, pero la más utilizada por su eficiencia y beneficios es RUP. En este trabajo se hará una comparación entre RUP como tradicional y XP como la más popular en metodología ágil.
1.12.1 Metodología de Programación Extrema (XP)
La Metodología XP está basada en valores como la simplicidad pues asume que siempre debe existir una solución rápida, comunicación, retroalimentación y coraje. No es la más adecuada ya que presenta controversias en cuanto a su utilización, como son su poca documentación, no se puede aplicar a proyectos que requieren una gran seguridad, plantea que el exceso de pruebas retrasa el desarrollo del proyecto y que la programación en pareja retrasa el tiempo y consume más recursos. Además presenta individualidad, es retraído y propone la utilización de áreas abiertas en lugares de cubículos, es decir:
Individualidad: falta de comunicación y evaluación por desempeño.
Antisocial o Retraído: idiosincrasia del programador típico.
Área abierta en lugares de cubículos: inadaptación al entorno físico sugerido.
Es una metodología recomendable solo para proyectos pequeños y de corto plazo
23 Headquarters, C. visual-paradigm. Diez razones para escoger Visual Paradigm . [En línea] 2007. http://www.visual- paradigm.com/aboutus/10reasons.jsp .
~ 22 ~
Presenta altas comisiones en caso de fallos [24].
1.12.2 Metodología RUP
RUP es un Proceso de Desarrollo de Software (Rational Unified Process) que utiliza el Lenguaje de Modelado Unificado (UML) para la representación visual, construye la metodología estándar más utilizada en el análisis, implementación y documentación de sistemas orientados a objeto. RUP es el resultado de muchos años de trabajo de sus creadores Jacobson, Rumbaugh y Booch y la unificación de las mejores metodologías anteriores, además de estar preparada para grandes y complejos proyectos. Es un proceso en el cual se definen como sus principales elementos los trabajadores, artefactos, flujo de actividades y actividades. El ciclo de vida de RUP se caracteriza por ser dirigido por caso de uso, centrado en la arquitectura e iterativo e incremental.
RUP se divide en mini-proyectos, los cuales son iteraciones que se completan al finalizar cada ciclo. Cada ciclo se divide en cuatro fases que utilizan hitos para determinar donde hay que tomar una decisión importante. Además de estar dividido por nueve flujos de trabajo los cuales toman más importancia en una determinada fase del proyecto, lo que no significa que en otras no se tomen en cuenta. Las cuatro fases de RUP son:
Inicio: Se describe el negocio y se delimita el proyecto describiendo sus alcances con la identificación de los casos de uso del sistema.
Elaboración: Se define la arquitectura del sistema y se obtiene una aplicación ejecutable que responde a los casos de uso que lo comprometen.
Construcción: Se obtiene un producto listo para su utilización que está documentado y tiene un manual de usuario.
Transición: El release25 ya está listo para su instalación en las condiciones reales. Puede implicar reparación de errores.
24 Campos, Saul González. Progremación Extrema: Prácticas, Aceptación y Controversia. México, Juarez : Universidad Autónoma de Cd. Juárez., 2006.
25 Es un artefacto o conjunto de ellos que se generan en cada iteración. Cualquier tipo de información creada, modificada o usada por un proceso.
~ 23 ~
Los flujos de trabajo no son más que la agrupación de las actividades en grupos lógico. Los 6 primeros flujos se conocen como Flujos de Trabajo de Ingeniería y los otros tres como Flujos de Trabajo de Apoyo.
Se muestran a continuación los FT de ingeniería:
Modelo de Negocio: Describe el proceso de negocio identificando quienes participan y las actividades que requieren automatización.
Requerimiento: Define qué es lo que el sistema debe hacer, para lo cual se identifican las funcionalidades requeridas y las restricciones que se imponen.
Análisis y Diseño: Describe cómo el sistema será realizado a partir de las funcionalidades previstas y las restricciones impuestas, indica con precisión lo que se debe hacer.
Implementación: Define cómo se organizan las clases y objetos en componentes, cuáles nodos se utilizarán y la ubicación en ellos de los componentes y de la estructuras de capas de la aplicación.
Prueba: Busca los defectos a lo largo del ciclo de vida.
Instalación: Produce release del producto y realiza actividades (empaque, instalación, asistencia a usuario, etc.) para entregar el software a los usuarios finales.
La figura 1.1 muestra a RUP en dos dimensiones, es una forma más clara de entender la relación que existe entre los flujos de trabajo y las fases, expresada en iteraciones y puntos de control.
Figura 1.1 Modelo del flujo de trabajo de RUP
RUP, como se pudo apreciar, es una de las metodología más completas que existe, por eso es la utilizada